我在VS 2012 RTM,与EF 5.我做代码首先,而是试图忽略代码迁移,因为我只是在开发中。 为了避免这些,我有这一套
Database.SetInitializer(new DropCreateDatabaseIfModelChanges<SomeContext>());
有时,甚至当我不认为我感动的模型,它决定重建。 没关系。 但它通常会导致错误
因为它正在使用中,无法删除数据库。
所以,我决定彻底删除数据库。 我进入VS,转到“SQL Server的对象资源管理器”,找到DB并将其删除。 现在我被困在
无法附加文件“{0}”数据库“{1}”
我有这种情况发生,昨晚,我只是摆弄周围,直到它的工作(关停任务,重新启动VS,在web.config等改变了DB和文件名
所以,问题1)我如何摆脱这种状态的?
但更重要的问题,我如何防止自己在这种状态下得到呢?
在SQL Server对象资源管理器窗口可以容纳到数据库的连接。 关闭从它打开窗户,所有窗口释放连接。
我有同样的问题,并设法解决它。 主要的问题是,EF不会自动创建数据库。 该解决方案是不是很辛苦。
首先,到解决方案资源管理器,手动创建数据库。 要做到这一点,转到您的数据库所在的文件夹(通常App_Data
)。 此文件夹上单击鼠标右键,然后单击添加- >新建项目 。 选择数据选项卡,然后选择SQL Server数据库 。 请确保您输入的名称实体框架预计(在指定Cannot attach the file '{0}' as database '{1}'
的错误消息)。
那么很有可能你会得到,指出该数据库不包含任何模型元数据的错误消息。 为了避免这个,改变你的数据库初始化到:
Database.SetInitializer(new DropCreateDatabaseAlways<SomeContext>());
现在运行应用程序和数据库应该在那里的桌子正确创建。 一旦这一步已经成功执行,你改变更改数据库初始化回:
Database.SetInitializer(new DropCreateDatabaseIfModelChanges<SomeContext>());