c# - 如何在内存中模拟仅在运行时持续的数据库?
问题描述
我想使用DbContext模拟数据库操作并使用 EF 对我的模型进行操作,但没有安装实际的数据库。在.NET Core(版本2.2,如果有任何区别)中是否可能(相当容易)?
我已经阅读了有关AddXxxInMemory方法的信息,但仅在 Identity Server 的上下文中。最终,我将拥有一个持久数据源,但有时,我希望在内存中拥有一个伪造的数据源,通过种子填充它,而不依赖于安装的外部数据库。
这有可能吗?我的谷歌搜索造成了大部分混乱,并淹没在关于如何连接到 SQL Server 的指南中,并且由于某些奇怪的原因还链接到 IMDB。
解决方案
Entity Framework Core 提供了一个内存数据库。它最初是为单元测试而设计的,但它可以用于其他目的。
完整文档可在此处获得:https ://docs.microsoft.com/en-us/ef/core/providers/in-memory/
[TestMethod]
public void Add_writes_to_database()
{
var options = new DbContextOptionsBuilder<BloggingContext>()
.UseInMemoryDatabase(databaseName: "Add_writes_to_database")
.Options;
// Run the test against one instance of the context
using (var context = new BloggingContext(options))
{
var service = new BlogService(context);
service.Add("http://sample.com");
}
// Use a separate instance of the context to verify correct data was saved to database
using (var context = new BloggingContext(options))
{
Assert.AreEqual(1, context.Blogs.Count());
Assert.AreEqual("http://sample.com", context.Blogs.Single().Url);
}
}
推荐阅读
- php - apache solr 5.3.0 多核搜索
- google-chrome-extension - chrome扩展launchWebAuthFlow错误
- python - 使用 win32api 在内存对象中打印
- keras - keras 中的 preprocess_input 大大增加了火车的大小
- python - OpenCV使用单色相机将帧扔到输出时得到3张图片而不是1张
- java - 通过 Apache.Camel 连接 FTPS 读取超时
- c# - UWP GridView - 如何在调整大小时保持可见项目(列数更改)
- android - 无法解决:de.hdodenhof:circleimageview:2.4.0
- java - 从 Zip 输入流对象中提取单个文件
- apache-kafka - Kubernetes 上的 Kafka - 客户端无法检索元数据