在调试期间阻止Visual Studio使用LocalDB

时间:2016-11-17 21:01:31

标签: c# sql-server visual-studio

我在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表中看不到记录。

如何让VS使用webconfig中指定的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=&quot;data source=MyRemoteServer\MyInstance;initial catalog=MyDatabase;persist security info=True;user id=MyUser;password=MyPassword;MultipleActiveResultSets=True;App=EntityFramework&quot;" 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; }
}

0 个答案:

没有答案