2013-02-20 145 views
6

我最初有一个EF代码先建立了连接到现有数据库。这工作正常。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实例和我的域用户名是“系统管理员”的角色。

我试过各种数据库初始值设定项,并且我得到了所有相同的错误。它在第一次查询调用时失败,但代码首先不会创建数据库。我可以将连接字符串指向旧数据库的副本(在更改之前),并且它将正常运行,但即使我指定了DropCreateDatabaseAlways构造器,它仍旧是我的旧模式。这是没有道理的,而不是遵循我在家用机器上使用代码的经验。

使用Visual Studio 2012和EF5。

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

回答

8

找到了我在我的DbContext类中有一个静态构造函数,它重写了数据库初始值设定项。

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

代码第一反向工程将把这个,所以你不要覆盖你现有的数据库。当我转身时,我并没有想到它。

希望这会帮助别人。