IManifestTokenResolver用于数据库优先模型?

时间:2015-10-22 13:53:26

标签: entity-framework-6 ef-database-first

我们需要一个选项,在数据库优先模型的代码中设置ProviderManifestToken,以覆盖EDMX的值,在我们的特定情况下默认为SQL Server 2012的“2012”。

到目前为止我们已尝试过:如this post中所述,我们使用DbConfigurationType属性修饰了我们的上下文类,我们的派生类看起来与该帖子完全相同。

internal sealed class MyDbConfiguration : DbConfiguration
{
   public MyDbConfiguration()
   {
      //this.AddDependencyResolver(new SingletonDependencyResolver<IManifestTokenResolver>(new ManifestTokenService()));

      this.SetManifestTokenResolver(new ManifestTokenService());
   }
}

正如您所看到的,我们在这里尝试了两种不同的东西,AddDependencyResolver和SetManifestTokenResolver。

当我们启动应用程序时,执行进入MyDbConfiguration的构造函数 - 就是它,依赖解析器本身

internal sealed class ManifestTokenService : IManifestTokenResolver
{
   private const string SqlServerManifestToken = @"2005";

   private static readonly IManifestTokenResolver DefaultManifestTokenResolver = new DefaultManifestTokenResolver();

   /// <inheritdoc />
   public string ResolveManifestToken(DbConnection connection)
   {
      if (connection is SqlConnection)
      {
         return SqlServerManifestToken;
      }

      return DefaultManifestTokenResolver.ResolveManifestToken(connection);
   }
}

永远不会被调用,因此我们似乎已经走到了死胡同。有没有人有同样的问题并找到了解决方案?

0 个答案:

没有答案