实体框架LocalDB connectionstring

时间:2014-09-01 10:34:48

标签: c# entity-framework tsql visual-studio-2013 mdf

我发现很难理解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)如何工作以及底层机制如何工作的问题。

那里的大多数文章和文档已经假设您了解一些机制,并且他们不会帮助您参考您需要知道的内容。

无论如何,对于这个特定的问题,如何让我的项目使用我在项目的根文件夹中的数据库?

1 个答案:

答案 0 :(得分:2)

在开发期间,每次重建应用程序以进行调试/发布模式时,Visual Studio都会创建数据库(和其他文件)的副本。正如Adriano发布的那样,每次运行一个新的应用程序时它都会创建一个新的mdf文件(它会重建你的应用程序)。

如果您希望每次都不会发生这种情况,您可以更改&#34;复制到输出&#34;属性并选择(&#34;不复制&#34;或&#34;复制如果较新&#34;)。要执行此操作,您需要打开解决方案资源管理器,右键单击您的mdf文件,转到属性并更改&#34;复制到输出目录&#34;。

如果您想访问您的数据&#34;已插入&#34;在调试模式下,您可以在SQL Server对象资源管理器上的bin / debug / [yourdb] .mdf上引用localdb副本,或者创建一个新的数据连接(不建议使用最后一个)。但请记住,每次重新启动调试时,除非你改变你的职业,否则这将重新开始。