c# - 实体框架数据库的磁盘文件夹位置在哪里?
问题描述
Microsoft文档指出,使用代码优先方法的应用程序可以简单地指定模型,如果数据库不存在,则会创建该数据库。
但我希望我的应用程序将其数据存储在最终用户硬盘上的数据库中。所以我可以在我的连接字符串中引用 localdb(用于 SQL Server),但我仍然不知道用户机器上的哪个文件夹将包含数据库文件。
如果用户不知道数据文件在哪里,如何备份她的数据文件?
有没有办法询问DbContext
对象它的文件存储在哪里?
我知道我可以在通过 SQL 创建数据库时指定数据库的路径,但有人告诉我,将 EF 样式的数据库交互与非 EF 数据库交互(来自 ADO.NET)混合不是一种好的形式。
解决方案
从 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);
推荐阅读
- javascript - 在 React Native 中每天进行一次条件渲染
- postgresql - Celery 容器中的 pg_dump 与其他容器中的 pg_dump 不同
- typescript - 从 CommonJS 切换到 ES2020 模块后必须附加 /index 以导入 index.d.ts
- node.js - MissingSchemaError:尚未为模型“农场”注册架构
- delphi - 选择哪一个,stdcall 还是 cdecl?
- java - 幂等Kafka生产者回调
- python - 在 Raspbian 中启动后如何启动 python 脚本?
- postgresql - AWS Postgres 设置 pg_trgm.word_similarity_threshold
- gradle - 通过 Nexus 下载 Gradle 构建请求额外的“/gradle/plugin”目录
- node.js - 如何对谷歌助手 dialogflow fullfilment 进行单元测试