Asp.net EF 4.1例外情况“;提供程序未返回ProviderManifestToken字符串;
我试图复制MSDN上的一个示例。我正在使用ASP.NET和EF4.1(CTP?)。我已经使用NuGet安装了EntityFramework包 我收到此错误:Asp.net EF 4.1例外情况“;提供程序未返回ProviderManifestToken字符串;,asp.net,sql,entity,Asp.net,Sql,Entity,我试图复制MSDN上的一个示例。我正在使用ASP.NET和EF4.1(CTP?)。我已经使用NuGet安装了EntityFramework包 我收到此错误:提供程序未返回ProviderManifestToken字符串。。。 而且数据库永远不会被创建 这是我的连接字符串: <add name="HospitalContext" connectionString= "data source=.\SQLExpress;initial catalog=NewTestDB;integr
提供程序未返回ProviderManifestToken字符串
。。。
而且数据库永远不会被创建
这是我的连接字符串:
<add name="HospitalContext"
connectionString=
"data source=.\SQLExpress;initial catalog=NewTestDB;integrated security=True;"
providerName="System.Data.SqlClient"/>
以下是我的背景:
public class HospitalContext : DbContext
{
static HospitalContext()
{
Database.SetInitializer(new HostpitalContextInitializer());
}
public DbSet<Patient> Patients { get; set; }
public DbSet<LabResult> LabResults { get; set; }
}
public class HostpitalContextInitializer :
DropCreateDatabaseIfModelChanges<HospitalContext>
{
protected override void Seed(HospitalContext context)
{
context.Patients.Add(new Patient { Name = "Fred Peters" });
context.Patients.Add(new Patient { Name = "John Smith" });
context.Patients.Add(new Patient { Name = "Karen Fredricks" });
}
}
公共类HospitalContext:DbContext
{
静态HospitalContext()
{
SetInitializer(新的HostpitalContextInitializer());
}
公共数据库集患者{get;set;}
公共DbSet LabResults{get;set;}
}
公共类HostpitalContextInitializer:
DropCreateDatabaseIfModelChanges
{
受保护的覆盖无效种子(HospitalContext上下文)
{
Add(新患者{Name=“Fred Peters”});
Add(新患者{Name=“John Smith”});
Add(新患者{Name=“Karen Fredricks”});
}
}
这是一个完全修补的SQL 2008系统,使用VS 2010 SP1。我也遇到了同样的问题,我在我的上下文实例之后添加了以下代码(通过示例onload)
我对MvcMusicStore应用程序也有类似的问题。我将Web.config中的一行从 “Instance=true”到“Instance=false”。它有时在没有这种调整的情况下工作,但我不知道是什么原因造成了这种差异。读这个
没有真正的帮助。我遇到了这个错误,尝试了一些早期的建议。然后我检查了内部异常,发现用户的SQL登录失败了。只需检查其他内容。在Visual Studio中将连接字符串放在错误项目的app.config中时,有时会发生这种情况
例如,我在EF 4.1(发布版本)project+WCF数据服务项目中遇到了这个问题,我注意到在使用它的数据服务项目中没有指定连接字符串。由于某种权限原因,EF无法创建数据库连接。 我一整天都在面对同样的问题。最后,我尝试了以下解决方案,效果良好: a/打开IIS(我正在使用IIS 7) b/打开网站正在使用的appool的高级设置(例如:DefaultAppPool) c/查看流程模型组,将标识值更改为“Localsystem”
希望它能与您一起工作。我遇到了相同的错误,实际上是指定服务器的登录失败。我从配置连接字符串中删除了“integratedsecurity”属性,它成功了 我也有同样的问题…
对我有效的解决方案是:
运行客户端网络配置工具(在运行中键入cliconfg)
确保TCP/IP已启用。在将Visual Studio 11 Beta与EF4.1和ASP.NET MVC一起使用时,我差点把头发拔掉,直到找到 为了解决我的问题,我进入应用程序启动并进行了更改 Database.DefaultConnectionFactory=newsqlconnectionfactory(“数据源=(localdb)\v11.0;集成安全性=True;MultipleActiveResultSets=True”) 到 Database.DefaultConnectionFactory=newsqlconnectionfactory(@“数据源=(localdb)\v11.0;集成安全性=True;MultipleActiveResultSets=True”)
我终于破解了它——经过一番小小的疯狂追逐,我认为这是由于许可 启示:使用SQL分析器 (注:我最近从EF6降级为EF5) 使用SQL Profiler,我很快找到了报告失败之前执行的最后一个SQL:
SELECT TOP (1)
[Project1].[C1] AS [C1],
[Project1].[MigrationId] AS [MigrationId],
[Project1].[Model] AS [Model]
FROM ( SELECT
[Extent1].[MigrationId] AS [MigrationId],
[Extent1].[Model] AS [Model],
1 AS [C1]
FROM [dbo].[__MigrationHistory] AS [Extent1]
) AS [Project1]
ORDER BY [Project1].[MigrationId] DESC
好吧,看看这个,这与迁移有关。它正在查看\uu MigrationHistory
表,我甚至没有意识到它创建了该表(我已经在CSPROJ中删除了迁移),并将其清除
因此,我调出该表的行,并查看它与特定的产品版本(v6)相关联
事实上,我从EF6(我本来不打算安装)降级到EF5(它与脚手架更兼容),当问题开始的时候
我的猜测是Model()
列不向后兼容-因此提供程序没有返回ProviderManifest实例,因为它无法对其进行解码
我没有任何损失,只是彻底删除了这个表,运行了updatedatabase-Verbose
,然后重新启动并运行
如果您在高级环境中或已经在生产环境中,则清除此表可能不是解决方案,但这样可以让我立即重新开始工作
此错误仅在.edmx文件打开时出现,并在文件再次关闭时消失
这句话来自,它与我一起工作(visual studio 2013/MVC 5)我在一个解决方案中有多个项目,并在不同的时间向每个项目添加了EF。在一些机器上,它正在工作,在一些机器上,它因上述错误而失败。我花了一段时间才注意到我的一些项目的app.config有以下内容:
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="v11.0" />
</parameters>
</defaultConnectionFactory>
如果您使用LocalDb(新的“sqlexpress”类似),这是可以的,但是如果您没有安装特定的服务器并使用常规sql,则这是完全错误的
解决方案:删除上面的代码。
如果你使用EF代码首先要考虑的另一件事是,它有时不会自动创建支持数据库到你的DbCub类。解决方案是添加您自己的连接字符串-您可以使用可能存在的连接字符串作为模板来处理支持简单成员资格提供程序的用户/注册数据库。
最后,您需要为创建的DbContext类添加默认构造函数:
public ChaletDb():base("ChaletConnection")
{
}
这里,您在web.config文件中输入的连接字符串的名称用于指示DbContext创建数据库。
偶尔,
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="v11.0" />
</parameters>
</defaultConnectionFactory>
public ChaletDb():base("ChaletConnection")
{
}