在单元测试中,我将EF Core 2.2与InMemoryDatabase结合使用,例如:
var dbOptions = new DbContextOptionsBuilder<MyContext>().UseInMemoryDatabase("Foo").Options;
using (var context = new MyContext(dbOptions));
{
// Do stuff..
}
使用UseInMemoryDatabase
时真的需要处置DbContext
吗?读完Jon Gallants blog之后,我意识到即使使用真正的SQL数据库提供程序,也不总是需要Dispose()
。使用InMemoryDatabase时处理DbContext
有什么意义?我可以把它留给GC吗?
答案 0 :(得分:1)
只要上下文没有像db连接或文件资源之类的依赖项,这些依赖项都应在处置时释放,则可以省去处置。
所有超出范围的引用都会自动标记为垃圾回收。
根据代码的外观,您有一个using
块,在我看来这是一件好事,因为正在运行的代码一旦离开您的using
块,就会立即调用Dispose
。