我们需要一个选项,在数据库优先模型的代码中设置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);
}
}
永远不会被调用,因此我们似乎已经走到了死胡同。有没有人有同样的问题并找到了解决方案?