我对ASP和Windows Web开发完全陌生。我有一个用ASP.NET MVC 4编写的小型Web应用程序,我已经设置了一个带有两个表的.sdf数据库。
当我运行应用程序时,数据存储在某处,但它不在我在visual studio中创建的数据库中。
我在Web.config中的连接字符串:
<connectionStrings>
<add name="MoraleDBContext" connectionString="Data Source=|DataDirectory|\Morale.sdf" providerName="System.Data.SqlServerCe.4.0"/>
</connectionStrings>
和我的控制器方法(试图让某些东西起作用):
// POST: /MoraleScore/Create
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(MoraleScoresDB moralescoresdb)
{
UsersDB test = new UsersDB();
test.ID = 2;
test.UserName = "jake";
db.Users.Add(test);
// Do checks on user to make sure that they have not already voted for this sprint, that they are allowed to vote...or before this?
string username = System.Web.HttpContext.Current.User.Identity.Name;
// Get username from list in database and set the right ID
List<UsersDB> users = db.Users.SqlQuery("SELECT * FROM UsersDBs WHERE UserName = '" + username + "'").ToList();
moralescoresdb.UserID = 1;/* users[0].ID;*/
List<MoraleScoresDB> scores = db.MoraleScores.SqlQuery("SELECT * FROM MoraleScoresDBs;").ToList();
if (ModelState.IsValid)
{
db.MoraleScores.Add(moralescoresdb);
db.SaveChanges();
}
List<MoraleScoresDB> scores2 = db.MoraleScores.SqlQuery("SELECT * FROM MoraleScoresDBs;").ToList();
return RedirectToAction("Index");
}
附加调试器后,我可以看到分数比分数少一个,但我的数据库表是空的。 &#34;数据库&#34;这是sql server compact 4.0本地数据库在我的App_Data文件夹中。
如果您需要更多信息,请告诉我,因为我对此完全陌生,我可能会事先遗漏一些信息。 (数据库名为&#34; Morale.sdf&#34;并且在服务器资源管理器中可见)
编辑:
这是模特:
namespace AgileWebsite.Models
{
public class UsersDB
{
public int ID { get; set; }
public string UserName { get; set; }
}
public class MoraleScoresDB
{
public int ID { get; set; }
public int UserID { get; set; }
[Required]
[Display(Name = "Morale Score")]
[Range(1, 10, ErrorMessage = "The score needs to be between 1 and 10.")]
public int MoraleScore { get; set; }
}
public class MoraleDBContext : DbContext
{
public MoraleDBContext()
: base("MoraleDBContext")
{}
public DbSet<UsersDB> Users { get; set; }
public DbSet<MoraleScoresDB> MoraleScores { get; set; }
}
}
这里是moraleScoreController的顶部(就在您上面看到的帖子请求创建功能的上方)
namespace AgileWebsite.Controllers
{
public class MoraleScoreController : Controller
{
private MoraleDBContext db = new MoraleDBContext();
private MoraleScoresDB moraleModel = new MoraleScoresDB();
更新:
事实证明,自动创建的数据库是在以下位置创建的: C:\ Program Files \ Microsoft SQL Server \ MSSQL10.SQLEXPRESS \ MSSQL \ DATA
我想我也使用了错误的web.config文件,其中有一个&#34; Views&#34;文件夹和项目中的文件夹,后者是要使用的文件夹。
连接的名称应与派生的DbContext类相同。
答案 0 :(得分:0)
(假设db是DbContext派生类(来自实体框架库)。)
尝试添加...
db.SaveChanges();
将用户添加到数据库后。
另外,我在使用带有紧凑型数据库的服务器资源管理器时遇到了一些问题。它会丢弃连接(显示小红色&#34; x&#34;)有时即使我选择&#34;刷新&#34;在连接上我不会看到新数据。我删除了连接,然后再次添加(通过双击sdf文件)然后我可以看到新数据。