首页 > 解决方案 > 实体框架数据库的磁盘文件夹位置在哪里?

问题描述

Microsoft文档指出,使用代码优先方法的应用程序可以简单地指定模型,如果数据库不存在,则会创建该数据库。

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

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

有没有办法询问DbContext对象它的文件存储在哪里?

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

标签: c#.netentity-framework

解决方案


从 Microsoft 文档页面

用户数据库文件存储在用户指定的位置,通常在 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);

推荐阅读