c# - 使用 InMemoryDatabase 时是否需要 Dispose DbContext?
问题描述
在我的单元测试中,我使用带有InMemoryDatabase的 EF Core 2.2,例如:
var dbOptions = new DbContextOptionsBuilder<MyContext>().UseInMemoryDatabase("Foo").Options;
using (var context = new MyContext(dbOptions));
{
// Do stuff..
}
使用UseInMemoryDatabase
时我真的需要处理DbContext
吗?阅读Jon Gallants 的博客后,我意识到即使使用真正的 SQL 数据库提供程序,Dispose()
也并不总是需要这样做。DbContext
使用 InMemoryDatabase 时处理的意义何在?我可以把它留给GC吗?
解决方案
只要上下文没有像数据库连接或文件资源这样应该在 dispose 时释放的依赖项,您就可以省略 dispose。
所有超出范围的引用都会自动标记为垃圾回收。
从您的代码的外观来看,您有一个using
块,在我看来这是一件好事,因为一旦正在运行的代码离开您的using
块,Dispose
就会被调用。
推荐阅读
- c++ - 如何从 Win32 C++ 应用程序输出到父控制台窗口?
- nativescript - Nativescript RadListView 交错布局问题
- java - 删除数组的空值
- javascript - 如果标签包含数值,删除括号并添加类名
- php - 无法在 IIS 上连接到 mySql
- c++ - 字符字面差异?
- ffmpeg - FFMPEG Concat 过滤器 - 输出视频跳过第二个文件
- ffmpeg - 使用ffmpeg在视频中查找帧
- sql - Rails 5.2 ActiveRecord 查询返回数组而不是 ActiveRecord::AssociationRelation
- node.js - 多个验证错误 - AWS Rekognition