【问题标题】:Where is the disk folder location of an Entity Framework database?实体框架数据库的磁盘文件夹位置在哪里?
【发布时间】:2019-12-03 00:54:42
【问题描述】:

Microsoftdocumentation 表示使用代码优先方法的应用程序可以简单地指定模型,如果数据库不存在,则会创建它。

但我希望我的应用程序将其数据存储在最终用户硬盘上的数据库中。所以我可以在我的连接字符串中引用 localdb(用于 SQL Server),但我仍然不知道用户机器上的哪个文件夹将包含数据库文件。

如果用户不知道自己的数据文件在哪里,如何备份?

有什么方法可以询问DbContext 对象的文件存储在哪里?

我知道我可以在通过 SQL 创建数据库时指定数据库的路径,但有人告诉我,将 EF 样式的数据库交互与非 EF 数据库交互混合使用不是一种好的形式(来自 ADO.NET )。

【问题讨论】:

  • 您需要发送自定义 SQL 查询来获取文件位置,例如SELECT name, physical_name AS current_file_location FROM sys.master_filesHow to send a raw query
  • 酷 - 谢谢@JohnWu,我会试试看。
  • @JohnWu ,我无法让它工作......我似乎无法正确获取对 DbContext 的 SQL 查询。似乎我有 2 个提交查询的选项:context.Database.SqlQuery(, query) 或 context..SqlQuery(query)。这些都不适合我,因为我似乎无法获得正确的 ...您能为此显示一两行代码吗...?
  • 认为你必须为这个结果集定义一个类型。好像很麻烦我个人会跳过 EF 并直接使用 SqlCommandSqlDataReader。没有规定说你不能。
  • 嗯...我得看看它,因为到目前为止我主要关注的是 EF...

标签: c# .net entity-framework


【解决方案1】:

来自微软文档page

用户数据库文件存储在用户指定的位置,通常是 在 C:\Users\UserName\Documents\ 文件夹中的某处。

所以安装 SQL Express localdb 的人或安装程序知道数据库在哪里。

编辑: 要在运行时设置连接字符串,您可以将连接字符串而不是连接字符串名称传递给您的数据库上下文。您可以自己创建连接字符串或使用EntityConnectionStringBuilder

// Manually build the connection string
var connectionString = "Server=(LocalDB)\MSSQLLocalDB; Integrated Security=true;AttachDbFileName=" + pathToDatabase;

var dbContext = new YourDBContext(connectionString);

【讨论】:

  • 感谢@bdongus,您的回复...“所以安装 SQL Express localdb 的人员或安装程序知道数据库在哪里。”我不能期望我的应用程序的每个最终用户都建立一个数据库。我怀疑我的安装程序必须这样做。但我真的希望我的代码在找不到/打开现有数据库时这样做。
  • 好吧。然后尝试 AttachDbFileName 连接本地部署的数据库文件。
  • 你能用几行代码给我一个例子吗?我只在 LocalDbConnectionFactory 的文档中看到对此的引用,我没有使用过,我没有看到如何查询或设置这个值...
  • 您不需要代码来设置它。只需在配置中编辑连接字符串。像这样: Server=(LocalDB)\MSSQLLocalDB; Integrated Security=true ;AttachDbFileName=D:\Data\MyDB1.mdf
  • 我认为你仍然错过了我之前的观点。这是每个用户机器上的本地数据库。因此,当每个用户的 UserName 发生变化时,我无法在配置文件中指定 C:\Users\UserName\Documents\。它必须在运行时确定,即在代码中。但是如何在运行时使用 EF 指定连接字符串?这似乎是许多应用程序都会遇到的情况,但我在网上几乎看不到它......
猜你喜欢
  • 2023-03-09
  • 1970-01-01
  • 2017-04-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-14
  • 2011-05-10
相关资源
最近更新 更多