使用InMemoryDatabase时是否需要释放DbContext?

时间:2019-01-31 06:57:06

标签: c# entity-framework-core

在单元测试中,我将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吗?

1 个答案:

答案 0 :(得分:1)

只要上下文没有像db连接或文件资源之类的依赖项,这些依赖项都应在处置时释放,则可以省去处置。

所有超出范围的引用都会自动标记为垃圾回收。

根据代码的外观,您有一个using块,在我看来这是一件好事,因为正在运行的代码一旦离开您的using块,就会立即调用Dispose