我想使用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实例运行它。
答案 0 :(得分:1)
|DataDirectory|
概念更适用于网络项目,并且考虑Debug
正在Project-Root\bin\Debug
下运行,那么我猜您的应用程序不是网络应用程序。
最简单的答案是在项目中将.mdf
文件设置为Copy if newer
或Always copy
。这样,当您从.mdf
执行应用程序时,您始终会在正确的文件夹中获取VS
文件。