【发布时间】:2011-06-12 02:34:13
【问题描述】:
我有一个使用 EF 代码优先的 asp.net MVC3 项目。对于我的单元测试,我一直在使用 SQL Server CE 4.0 和 SQL Server 2008 Express。两者都与 EF 按预期生成我的数据库完美配合。
但是,当我在单元测试之外运行我的应用程序并将其指向我的连接字符串时,我得到了错误
ProviderIncompatibleException:提供者未返回 ProviderManifestToken 字符串
我已阅读有关此的 MS 文档,看来这是 EF 模型生成的 SqlVersion 令牌。问题是我使用的是代码优先方法,所以我没有.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>
【问题讨论】:
-
您确定使用了连接字符串吗?它应该与从 DbContext 派生的类同名。
-
是的。我发现了问题所在。这是几件事。 (1)SqlServer中不应该预先创建db,即使它是空的。让英孚做这件事。 (2) 如果未在 DbContext 中声明,则应包含初始目录名称。 (3) 我无法在 Medium Trust 下创建数据库。希望这对某人有所帮助。
-
@nameEquals...你是如何解决上面第 3 项的?
标签: entity-framework connection-string code-first