我可以使用Code First Data Migrations指定数据库的位置吗?

时间:2016-06-03 16:46:48

标签: c# entity-framework ef-code-first

我想使用Entity Framework的Code First Data Migrations,我希望数据库驻留在App_Data文件夹中。如果我在没有连接字符串的情况下首先使用代码,则数据库将被放入计算机用户文件夹中。我想暂时保留数据库与Visual Studio项目。我认为下面的连接字符串可能有用,但事实并非如此。

<add name="BOEContext"
 connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\BOEContext.mdf;Integrated Security=True"
 providerName="System.Data.SqlClient"
/>

1 个答案:

答案 0 :(得分:1)

这应该是你,把它放在上下文的OnModelCreating(DbModelBuilder构建器)中

AppDomain.CurrentDomain.SetData("DataDirectory", "the PATH to the mdf");

或者你可以做这样的事情

 <add name="DefaultConnection" connectionString="Data Source=(LocalDb)\MSSQLLocalDB;AttachDbFilename=D:\TQL.mdf;Initial Catalog=XXX;Integrated Security=True" providerName="System.Data.SqlClient" />

我一直遇到的问题是迁移运行的地方决定了mdf文件的最终位置,所以如果我从VS命令窗口运行迁移到repo项目,那么它最终会在那个项目根目录中运行,但是如果我运行的话通过使用该repo启动Web项目时使用自动迁移,它将最终出现在web项目app_data文件夹中,然后从VS命令行搞砸了它。

命令行覆盖应该类似于

Update-Database -Verbose -ConnectionString "CONNECTIONSTRING" -ConnectionProviderName "System.Data.SqlClient"