我想使用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"
/>
答案 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"