【问题标题】:Can I specify where I want the database with Code First Data Migrations?我可以使用 Code First 数据迁移指定我想要数据库的位置吗?
【发布时间】:2016-06-03 16:46:47
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

    这个应该可以,放到上下文的OnModelCreating(DbModelBuilder builder)中

    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 项目运行迁移,它最终会出现在该项目的根目录中,但如果我运行通过在使用该存储库启动 Web 项目时使用自动迁移,它最终会出现在 Web 项目 app_data 文件夹中,然后从 VS 命令行运行它就搞砸了。

    命令行覆盖应该类似于

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

    【讨论】:

    • 从 VS 命令行运行迁移时有没有办法指定数据库位置?即 c:\databases\mydatabase.mdf
    • 用覆盖配置文件设置的命令更新了答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-08
    • 2020-12-03
    • 1970-01-01
    • 1970-01-01
    • 2013-04-20
    • 2020-11-08
    相关资源
    最近更新 更多