- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个使用 EF 代码优先的 asp.net MVC3 项目。对于我的单元测试,我一直使用 SQL Server CE 4.0 和 SQL Server 2008 Express。两者都与 EF 完美配合,按预期生成我的数据库。
但是,当我在单元测试之外运行应用程序并将其指向我的连接字符串时,我收到错误
ProviderIncompatibleException: The provider did not return a ProviderManifestToken string
我已阅读有关此内容的 MS 文档,看来这是 EF 模型生成的 SqlVersion
token 。问题是我使用的是代码优先方法,因此我没有 .edmx 文件,也不知道将元数据信息指向哪里,因为数据库尚未生成。
我知道我的连接字符串数据库名称、用户名和密码都是正确的,因为将它们更改为错误的值会引发预期的错误。不知道从哪里开始。
谢谢。
这是我的连接字符串:
<connectionStrings>
<add
name="SqlConnection"
providerName="System.Data.SqlClient"
connectionString="Data Source=WORKSTATION\SQLEXPRESS;Initial Catalog=CodeFirst;Integrated Security=False;
Persist Security Info=False;User ID=CodeFirst_user;Password=password1;Connect Timeout=120;MultipleActiveResultSets=True;"/>
</connectionStrings>
最佳答案
如果您使用 EF 6(刚刚发布),您还有一个替代方案。
您可以使用新的 dependency resolution注册 IManifestTokenResolver
实现的功能(在 this preview documentation 中描述为 IManifestTokenService
)。
This article提供了有关如何使用 DbConfiguration 的更多信息。最简单的使用方法是这样的:
DbConfigurationType(typeof(EntityFrameworkDbConfiguration))]
public class MyContextContext : DbContext
{
}
此示例在为 SQL Server 连接构建元数据时避免了对数据库的任何访问,并自动指定 SQL Server 2005 兼容性。
using System.Data.Common;
using System.Data.Entity;
using System.Data.Entity.Infrastructure;
using System.Data.Entity.Infrastructure.DependencyResolution;
using System.Data.SqlClient;
/// <summary>
/// A configuration class for SQL Server that specifies SQL 2005 compatability.
/// </summary>
internal sealed class EntityFrameworkDbConfiguration : DbConfiguration
{
/// <summary>
/// The provider manifest token to use for SQL Server.
/// </summary>
private const string SqlServerManifestToken = @"2005";
/// <summary>
/// Initializes a new instance of the <see cref="EntityFrameworkDbConfiguration"/> class.
/// </summary>
public EntityFrameworkDbConfiguration()
{
this.AddDependencyResolver(new SingletonDependencyResolver<IManifestTokenResolver>(new ManifestTokenService()));
}
/// <inheritdoc />
private sealed class ManifestTokenService : IManifestTokenResolver
{
/// <summary>
/// The default token resolver.
/// </summary>
private static readonly IManifestTokenResolver DefaultManifestTokenResolver = new DefaultManifestTokenResolver();
/// <inheritdoc />
public string ResolveManifestToken(DbConnection connection)
{
if (connection is SqlConnection)
{
return SqlServerManifestToken;
}
return DefaultManifestTokenResolver.ResolveManifestToken(connection);
}
}
}
关于entity-framework - 如何为 EF Code First 配置 ProviderManifestToken,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4741499/
我是一名优秀的程序员,十分优秀!