DbCompiledModel在内存数据库中的使用情况

时间:2018-09-18 12:22:02

标签: c# entity-framework-6 effort

我有一个使用内存数据库的单元测试项目。内存数据库由主项目创建的现有本地数据库构成,其中包含我要测试的所有模型。

我已经这样设置了模型的缓存:

 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行,它可以编译,但是速度没有任何改善。

0 个答案:

没有答案