独立于内存数据库EF7

Abr*_*ris 6 xunit entity-framework-core

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

Yur*_*kiy 7

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

就像是

var builder = new DbContextOptionsBuilder();
builder.UseInMemoryDatabase($"database{Guid.NewGuid()}");
Run Code Online (Sandbox Code Playgroud)


Rob*_*ahl 0

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

如果您没有获得任何值得付出努力的速度改进,您可以使用该[Collection("Memory Database Tests")]属性来确保使用相同内存数据库运行的测试不会并行运行(https://gist.github.com/bradwilson/8423477)。