实体框架LocalDB连接字符串

本文关键字:字符串 连接 LocalDB 框架 实体 | 更新日期: 2023-09-27 18:20:08

我发现很难理解Visual Studio中的实体框架是如何处理LocalDB的。

在我的项目根文件夹中,我有一个.mdf数据库文件,我们称之为MyDatabase.mdf

我在WPF应用程序中使用MVVM模式,所以在Model文件夹中,我添加了一个ADO.NET实体数据模型(代码首先来自数据库)。

现在,在服务器资源管理器视图中,我总是向这个MyDatabase.mdf添加一个数据连接,从这里我至少可以对数据库进行一些控制(比如执行EmptyDatabase过程或其他什么)。

现在最烦人的一件事是,每当我运行我的项目时,不知何故,在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)如何工作以及底层机制如何工作方面存在这些问题的人。

大多数文章和文档已经假设你知道一些机制,它们不会帮助你参考你需要知道的内容。

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

实体框架LocalDB连接字符串

在开发过程中,Visual Studio每次为调试/发布模式重新构建应用程序时都会创建数据库(和其他文件)的副本。正如Adriano所发布的,每当你运行一个新的应用程序时,这将创建一个新mdf文件(它会重建你的应用程序)。

如果您不希望每次都发生这种情况,您可以更改"复制到输出"属性并选择("不复制"或"更新时复制")。要做到这一点,你需要打开解决方案资源管理器,右键单击你的mdf文件,转到属性并更改"复制到输出目录"。

如果您希望在调试模式下访问"插入"的数据,则可以在SQL Server对象资源管理器的bin/debug/[yourdb].mdf上引用本地数据库副本,或者创建一个新的数据连接(不建议使用最后一个)。但请记住,每次重新启动调试时,都会重新开始,除非您更改了属性。