我有一个使用内存数据库的单元测试项目。内存数据库由主项目创建的现有本地数据库构成,其中包含我要测试的所有模型。
我已经这样设置了模型的缓存:
public sealed class ConfigurationCaching : DbConfiguration
{
public ConfigurationCaching() : base()
{
var pathEDMX = Path.Combine(AppDomain.CurrentDomain.BaseDirectory);
this.SetModelStore(new DefaultDbModelStore(pathEDMX));
}
}
然后放
[DbConfigurationType(typeof(ConfigurationCaching))]
在主项目的DbContext上。缓存按预期工作。为了加快单元测试的速度,我希望使用相同的缓存机制。
通过将连接发送到DbContext实例来建立Effort连接。然后,在使用DbContext类作为泛型来实现DbMigrationsConfiguration的类中,我具有以下代码:
AutomaticMigrationsEnabled = true;
AutomaticMigrationDataLossAllowed = true;
var migrator = new DbMigrator(this);
_pendingMigrations = migrator.GetPendingMigrations().Any();
在var migrator = new DbMigrator(this)时失败。说明
不支持使用相同的DbCompiledModel针对不同类型的数据库服务器创建上下文。而是为每种使用的服务器类型创建一个单独的DbCompiledModel。
可以解决此问题,或者无法使用生成的EDMX。如果我注释掉DbMigrator行,它可以编译,但是速度没有任何改善。