1

我最近从 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);}

这种方法没有太大变化,所以我认为这不是罪魁祸首。有没有人遇到过这个问题?如果您希望我发布更多代码,请告诉我。

4

2 回答 2

1

好的,事实证明我需要删除我的 app.config 文件,因为我使用的是 EF Code-First。 我开始使用数据库优先方法,但后来将其更改为 Code-First。一旦我删除了 app.config 文件,它就可以正常工作 - 只使用 update-database 命令创建一个数据库并在我的代码中使用相同的数据库。

哦,我可以在上下文构造函数中设置我的数据库名称,如下所示:

MyContext() : base("MyDatabase") { }
于 2013-02-24T16:06:18.843 回答
1

搜索您的代码以确保没有两个类正在实现 DbContext - 我在使用脚手架时遇到了这个问题。

打开您的上下文,并尝试使用连接字符串显式设置它,例如:

    public myContext()
        : base("name=DefaultConnection")
    {
    }

检查您的 web.config 以查看您的 EF 设置和连接字符串是否看起来很奇怪。

于 2013-02-16T15:02:03.957 回答