如何使用的LocalDB和EF工作,而无需使用迁移(How to work with LocalDB

2019-07-31 03:53发布

我在VS 2012 RTM,与EF 5.我做代码首先,而是试图忽略代码迁移,因为我只是在开发中。 为了避免这些,我有这一套

Database.SetInitializer(new DropCreateDatabaseIfModelChanges<SomeContext>());

有时,甚至当我不认为我感动的模型,它决定重建。 没关系。 但它通常会导致错误

因为它正在使用中,无法删除数据库。

所以,我决定彻底删除数据库。 我进入VS,转到“SQL Server的对象资源管理器”,找到DB并将其删除。 现在我被困在

无法附加文件“{0}”数据库“{1}”

我有这种情况发生,昨晚,我只是摆弄周围,直到它的工作(关停任务,重新启动VS,在web.config等改变了DB和文件名

所以,问题1)我如何摆脱这种状态的?

但更重要的问题,我如何防止自己在这种状态下得到呢?

Answer 1:

SQL Server对象资源管理器窗口可以容纳到数据库的连接。 关闭从它打开窗户,所有窗口释放连接。



Answer 2:

我有同样的问题,并设法解决它。 主要的问题是,EF不会自动创建数据库。 该解决方案是不是很辛苦。

首先,到解决方案资源管理器,手动创建数据库。 要做到这一点,转到您的数据库所在的文件夹(通常App_Data )。 此文件夹上单击鼠标右键,然后单击添加- >新建项目 。 选择数据选项卡,然后选择SQL Server数据库 。 请确保您输入的名称实体框架预计(在指定Cannot attach the file '{0}' as database '{1}'的错误消息)。

那么很有可能你会得到,指出该数据库不包含任何模型元数据的错误消息。 为了避免这个,改变你的数据库初始化到:

Database.SetInitializer(new DropCreateDatabaseAlways<SomeContext>());

现在运行应用程序和数据库应该在那里的桌子正确创建。 一旦这一步已经成功执行,你改变更改数据库初始化回:

Database.SetInitializer(new DropCreateDatabaseIfModelChanges<SomeContext>());


文章来源: How to work with LocalDB and EF, without using migrations