Updata-Database -ConnectionStringName with modified | DataDirectory |

时间:2016-12-30 16:23:50

标签: c# entity-framework ef-migrations

我想使用EF-Migrations,因此必须使用Update-Database。由于我在项目的主文件夹中使用了几个.mdf文件,这些文件也应该在调试时使用,我在ConnectionStrings中有一些App.config我与EF一起使用。

示例ConnectionString

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

因为虽然调试|DataDirectory|Project-Root\bin\Debug,但我编写了一个将|DataDirectory|更改为Project-Root\app_data的函数:

        #if DEBUG
        string path = Directory.GetParent(Environment.CurrentDirectory).Parent?.FullName + "\\app_data";
        AppDomain.CurrentDomain.SetData("DataDirectory", path);
        #endif

问题是当我调用|DataDirectory|Update-Database没有更新,因此无法找到.mdf文件。

我找到了一个没有答案/解决方案的very similar question,但它似乎没有得到那么多关注。

首先,有一种干净的方式来处理这个或更好的方法吗?我确实需要Project易于移植,这意味着我必须能够复制文件夹并让另一个VS实例运行它。

1 个答案:

答案 0 :(得分:1)

|DataDirectory|概念更适用于网络项目,并且考虑Debug正在Project-Root\bin\Debug下运行,那么我猜您的应用程序不是网络应用程序。

最简单的答案是在项目中将.mdf文件设置为Copy if newerAlways copy。这样,当您从.mdf执行应用程序时,您始终会在正确的文件夹中获取VS文件。