7

我最初设置了一个连接到现有数据库的 EF 代码。这工作正常。

然后,我对 POCO 进行了一些更改,并决定让代码首先为我生成新数据库。

出现错误:无法打开登录请求的数据库“MyDatabase”。登录失败。\r\n用户 'DOMAIN\username' 登录失败。

我删除了旧数据库,但没有更改连接字符串:

<add name="MyDatabaseContext" connectionString="Data Source=localhost;Initial Catalog=MyDatabase;Integrated Security=True;" providerName="System.Data.SqlClient" />

我的本地机器上有一个 sql server 2008 实例,我的域用户名是“sysadmin”角色。

我尝试了各种数据库初始化程序,但我得到了同样的错误。它在第一次查询调用时失败,但代码首先不会创建数据库。我可以将连接字符串指向旧数据库的副本(更改之前),它会运行良好,除了它是我的旧模式,即使我指定了 DropCreateDatabaseAlways 初始化程序。这是没有意义的,也没有遵循我在家用机器上首先使用代码的经验。

使用 Visual Studio 2012 和 EF5。

我需要能够让代码首先生成一个新数据库。到底是怎么回事?

4

1 回答 1

9

发现我的 DbContext 类中有一个静态构造函数,它覆盖了数据库初始化程序。

static MyDbContext()
        {
            Database.SetInitializer<MyDbContext>(null);
        }

代码优先逆向工程师将把它放进去,这样你就不会覆盖你现有的数据库。我换的时候没有考虑。

希望这会帮助别人。

于 2013-02-20T19:00:46.220 回答