我发现很难理解Visual Studio中的Entity Framework如何处理LocalDB。
在我的项目根文件夹中,我有一个.mdf
数据库文件,让我们称之为MyDatabase.mdf
我在WPF应用程序中使用MVVM模式,所以在我的Model
文件夹中,我添加了一个ADO.NET实体数据模型(代码优先于数据库)。
现在在Server Explorer视图中,我总是向这个MyDatabase.mdf
添加数据连接,从这里我至少可以控制数据库(比如执行EmptyDatabase
过程或其他)。< / p>
现在最烦人的事情是每当我运行我的项目时,不知何故在Debug文件夹下创建一个新的MyDatabase.mdf
,其中没有数据。
在app.config
中有以下标记:
<connectionStrings>
<add name="DysphagiaModel"
connectionString="data source=(LocalDB)\v11.0;attachdbfilename=|DataDirectory|\DysphagiaDB.mdf;integrated security=True;connect timeout=30;MultipleActiveResultSets=True;App=EntityFramework"
providerName="System.Data.SqlClient" />
</connectionStrings>
我只是无法弄清楚为什么实体框架以这种方式工作,我发现很难为那些刚接触的开发人员找到任何好的文档。我以前习惯使用PHP和MySQL,这真的比这简单得多。所以这真的非常令人沮丧,我无法想象我是唯一一个了解Visual Studio(和EF)如何工作以及底层机制如何工作的问题。
那里的大多数文章和文档已经假设您了解一些机制,并且他们不会帮助您参考您需要知道的内容。
无论如何,对于这个特定的问题,如何让我的项目使用我在项目的根文件夹中的数据库?
答案 0 :(得分:2)
在开发期间,每次重建应用程序以进行调试/发布模式时,Visual Studio都会创建数据库(和其他文件)的副本。正如Adriano发布的那样,每次运行一个新的应用程序时它都会创建一个新的mdf文件(它会重建你的应用程序)。
如果您希望每次都不会发生这种情况,您可以更改&#34;复制到输出&#34;属性并选择(&#34;不复制&#34;或&#34;复制如果较新&#34;)。要执行此操作,您需要打开解决方案资源管理器,右键单击您的mdf文件,转到属性并更改&#34;复制到输出目录&#34;。
如果您想访问您的数据&#34;已插入&#34;在调试模式下,您可以在SQL Server对象资源管理器上的bin / debug / [yourdb] .mdf上引用localdb副本,或者创建一个新的数据连接(不建议使用最后一个)。但请记住,每次重新启动调试时,除非你改变你的职业,否则这将重新开始。