我在Visual Studio 2013中有一个数据库第一个EF项目。我能够创建实体数据模型(基于SQL Server中的一个表)并使用脚手架向导来创建基本控制器和视图。
当我在Debug(f5)中运行Index视图时,我没有看到列出的记录,但是我的数据库中有一些记录。我尝试在控制器中放置一个断点来查看发生了什么,但是当我单步执行时,我只能看到没有记录被返回:
private KpiAttributeEntities db = new KpiAttributeEntities();
// GET: mfg_n_KpiAttribute
public ActionResult Index()
{
return View(db.mfg_n_KpiAttribute.ToList()); //no results
}
所以,我决定使用Create视图来查看是否可以创建一条成功运行的新记录。 但是,新记录不在我的SQL表中。这让我相信VS没有使用我在webconfig中设置的SQL实例/数据库(用于创建模型,控制器和视图的那个)。
我遵循了这里的建议: Why does Visual Studio start localdb and how can I stop that?
具体来说,我提出了建议的regedits,并在C:\ Program Files \ Microsoft SQL Server \ 120 \ LocalDB \ Binn中重命名了sqlservr.exe,并重新启动了我的计算机以验证没有延迟进程。我在taskmgr中看不到任何sqlservr进程。我的生产SQL Server实例是VS SQL Server对象资源管理器中唯一显示的实例。
但我仍然看到我在VS中运行Index视图时创建的记录,而我在SQL表中看不到记录。
<connectionStrings>
<add name="KpiAttributeEntities" connectionString="metadata=res://*/Models.KpiAttributeModel.csdl|res://*/Models.KpiAttributeModel.ssdl|res://*/Models.KpiAttributeModel.msl;provider=System.Data.SqlClient;provider connection string="data source=MyRemoteServer\MyInstance;initial catalog=MyDatabase;persist security info=True;user id=MyUser;password=MyPassword;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
</connectionStrings>
根据评论更新:
的DbContext:
public partial class KpiAttributeEntities : DbContext
{
public KpiAttributeEntities()
: base("name=KpiAttributeEntities")
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
throw new UnintentionalCodeFirstException();
}
public virtual DbSet<mfg_n_KpiAttribute> mfg_n_KpiAttribute { get; set; }
}