我最近从EF 4.3.1升级到4.4,并开始发生奇怪的事情。自升级以来,我已经触及了代码,所以我不能100%肯定地说是造成这个问题的原因。
无论如何,当我吹走现有数据库并从PM控制台调用Update-Database时,它会创建一个数据库,但是具有我的上下文的完全限定名称。即,MyProject.Data.MyContext。以前,它只是创建了一个名为MyContext的数据库。我可以初始化数据库中的一堆数据用于测试目的,但是当应用程序运行时,它表示数据库中没有任何内容。
当我查看数据库时,我看到现在有另一个名为MyContext的数据库(就像过去一样)。当我初始化该数据库中的测试数据时,应用程序运行正常并查看数据。
我正在重写OnModelCreating方法。基本上它看起来像这样:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{//My modelBuilder stuff.
base.OnModelCreating(modelBuilder);}
这种方法没有太大变化,所以我认为那不是罪魁祸首。有没有人遇到过这个问题?如果您希望我发布更多代码,请告诉我。
答案 0 :(得分:1)
搜索你的代码以确保没有两个类正在实现DbContext - 我在使用scaffolding时遇到过这种情况。
打开您的上下文,并尝试使用显式连接字符串进行设置,例如:
public myContext()
: base("name=DefaultConnection")
{
}
检查你的web.config,看看你的EF设置和连接字符串是否有任何奇怪的东西。
答案 1 :(得分:1)
好的,事实证明我需要吹掉我的app.config文件,因为我使用的是EF Code-First。 我开始使用数据库第一种方法,但后来将其更改为Code-First。一旦我吹走了app.config文件,它就能正常工作 - 只使用update-database命令创建一个数据库并在我的代码中使用相同的数据库。
哦,我能够在上下文构造函数中设置我的数据库名称,如下所示:
MyContext() : base("MyDatabase") { }