有没有办法创建一个独立(隔离)的EF7内存数据库实例?我在使用xUnit编写的单元测试中使用Entity Framework 7中的内存数据库。我想能够并行运行测试,但这似乎不太可能,因为所有测试似乎都使用相同的内存数据库。我希望每个测试都有自己的隔离内存数据库,不与并行运行的其他测试共享。
有没有办法创建一个独立(隔离)的EF7内存数据库实例?我在使用xUnit编写的单元测试中使用Entity Framework 7中的内存数据库。我想能够并行运行测试,但这似乎不太可能,因为所有测试似乎都使用相同的内存数据库。我希望每个测试都有自己的隔离内存数据库,不与并行运行的其他测试共享。
var builder = new DbContextOptionsBuilder();
builder.UseInMemoryDatabase($"database{Guid.NewGuid()}");
所以我还没有转移到EF7(仍在EF6),但是DbContext中的内部单例存在类似问题(我认为它是DbCompiledModel的缓存,我们的问题与运行时变化的映射相关,因此不完全与您的问题相同)。无论如何,尝试为每个测试集显式创建这些。
如果您没有获得值得努力的速度提升,可以使用[Collection("Memory Database Tests")]
属性确保运行相同内存数据库的测试不会并行运行(https://gist.github.com/bradwilson/8423477)。