独立于内存数据库EF7

时间:2016-01-21 14:00:25

标签: xunit entity-framework-core

有没有办法在内存数据库中创建一个单独的(隔离的)EF7实例?我在使用xUnit编写的单元测试中使用实体框架7中的内存数据库。我希望能够并行运行测试,但这并不可能,因为内存数据库中的所有测试似乎都是一样的。我想要的是每个测试都要在内存数据库中隔离,而不是与并行运行的其他测试共享。

2 个答案:

答案 0 :(得分:7)

在EF Core中,您可以为InMemory数据库上下文传递数据库名称。

这样的东西
var builder = new DbContextOptionsBuilder();
builder.UseInMemoryDatabase($"database{Guid.NewGuid()}");

答案 1 :(得分:0)

所以我还没有移动到EF7(仍然在EF6),但DbContext中存在内部单例的类似问题(我认为它是DbCompiledModel的缓存,我们的问题与映射有关)在运行时会有所不同,所以与你的不一样)。无论如何,尝试为每个测试集合显式创建这些。

如果您无法获得任何速度提升,则可以使用[Collection("Memory Database Tests")]属性确保使用相同内存数据库运行的测试不会并行运行({{3 }})。