2011-03-24 167 views
87

我试图复制在MSDN上找到的示例。我正在使用ASP.NET和EF 4.1(CTP?)。我已经使用NuGet来安装EntityFramework软件包。EF 4.1异常“提供程序没有返回ProviderManifestToken字符串”

我得到这个错误:The provider did not return a ProviderManifestToken string ... 和数据库永远不会创建。

这里是我的连接字符串:

<add name="HospitalContext" 
    connectionString= 
    "data source=.\SQLExpress;initial catalog=NewTestDB;integrated security=True;" 
    providerName="System.Data.SqlClient"/> 

这里是我的代码:

var pat = new Patient { Name = "Shane123132524356436435234" }; 
db.Patients.Add(pat); 

var labResult = new LabResult { Result = "bad", Patient = pat }; 

int recordAffected = db.SaveChanges(); 

这里是我的背景:

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" }); 
    } 
} 

这是一个完全使用补丁的SQL 2008系统,与VS 2010 SP1。

+0

在向模型添加[Key]之后,它看起来似乎已经过去了这个问题。我仍然遇到另一个问题,但这可能解决了这个问题。 – bugnuker 2011-03-24 17:53:32

+0

另外,它可能是我的连接字符串中添加了“Intergrated security = true”... – bugnuker 2011-03-24 19:17:20

+0

我在处理'SqlServerCe.Entity.dll'时遇到了同样的异常。 – 2011-07-02 07:37:16

回答

183

我得到这个错误,并尝试了一些早期的建议。然后我检查了内部异常,并注意到我得到了一个简单的SQL登录失败的用户。只是别的要检查。

+52

InnerException,sooo未被使用... – Konamiman 2011-09-27 11:34:29

+0

这是我的问题。 – 2011-10-27 15:01:25

+0

在我的情况下,sql服务器密码已过期 – mklein 2011-11-28 09:29:00

4

我有同样的问题,我只是我的上下文的实例(由为例onload事件)

context.Database.Connection.ConnectionString = @"Data Source=.\SQLExpress;Initial Catalog=Test;Integrated Security=True"; 
4

我有一个类似的问题与MvcMusicStore应用程序之后添加下面的代码。我将Web.config中的一行从 “Instance = true”更改为“Instance = false”。它有时没有这个调整,但我不知道是什么导致了差异。读这 http://msdn.microsoft.com/en-us/library/ms254504.aspx并没有真正的帮助。

+0

令人惊叹...这是我的合适解决方案。我不知道为什么。 – 2011-11-12 14:13:38

8

当您将在Visual Studio中的错误项目的app.config中的连接字符串,这样有时会发生。

例如,我在EF 4.1(发布版本)项目+ WCF数据服务项目中遇到了这个问题,我注意到我没有在数据服务项目中指定的连接字符串,它在哪里使用。

+0

这是我的解决方案。我必须在启动项目中放入正确的连接字符串。 – MickJuice 2014-03-02 15:17:20

2

由于权限的某些原因,EF无法创建数据库连接。 我一整天都面临同样的问题。最后,我曾尝试以下解决方案,它的工作:一 /打开IIS(我使用的是IIS 7) B /打开appool该网站的高级设置,采用(例如:默认应用) C /在过程模型组看,改变身份值“本地系统”

希望它与您合作。

5

我有同样的错误,实际上它是登录失败指定的服务器。我从配置连接字符串中删除了“集成安全性”属性,它工作。

+0

这对我有用。如果其他解决方案无法正常工作,任何有此问题的人都应该尝试。 – Justin 2012-06-15 18:01:53

+0

在我的计算机上关闭SQL Express服务时导致此错误。 – 2013-11-19 18:17:44

2

我只是有同样的问题...
为我工作的解决方案是:
运行客户机的网络配置工具(运行中键入cliconfg)
并确保TCP/IP启用..

1

在使用与EF4.1和ASP的Visual Studio 11 Beta版。NET MVC,我几乎把我的头发,直到我发现

http://connect.microsoft.com/VisualStudio/feedback/details/740623/asp-net-mvc-4-default-connection-string-improperly-escaped

要解决我的问题,我走进的Application_Start和改变

Database.DefaultConnectionFactory = new SqlConnectionFactory("Data Source=(localdb)\v11.0; Integrated Security=True; MultipleActiveResultSets=True");

Database.DefaultConnectionFactory = new SqlConnectionFactory(@"Data Source=(localdb)\v11.0; Integrated Security=True; MultipleActiveResultSets=True");

+0

'Database.DefaultConnectionFactory = new SqlConnectionFactory(@“Data Source =(localdb)\ v11.0; Integrated Security = True; MultipleActiveResultSets = True”);'被添加到我的'Main'方法中,现在它就像一个魅力!万分感谢。 – rotgers 2015-09-08 07:51:04

2

我终于解决了 - 经过轻微的大雁追逐,认为这是由于权限。

启示:使用SQL事件探查

(注:笔者近日从EF6降级至EF5)

使用SQL事件探查我很快就找到了报道的故障前最后执行的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 

那么看看这个 - 与迁移有关。它正在查看__MigrationHistory表格 - 我甚至没有意识到它已经创建(我已经在CSPROJ中删除了Migrations)并清除了该表格。

因此,我拉起该表的行并查看它与特定产品版本(v6)绑定。

enter image description here

我实际上是从EF6(我不打算在第一时间安装)以EF5(这是与脚手架更兼容),且当问题开始下调。

我的猜测是Model (<Binary data>)列不向后兼容 - 因此,The provider did not return a ProviderManifest instance错误,因为它无法解码它。

我没有任何损失,只是完全消灭了这张桌子并跑了Update-Database -Verbose,然后又恢复正常运行。

如果您处于高级环境中或已经在生产中,那么清除此表格可能不是解决方案,但这种方式可让我重新开始工作。

+0

我最终完全删除了__MigrationsHistory表,并使用“添加迁移”和“更新数据库-Verbose -Force”进行了rescaffolding。这里有一个命令参考http://coding.abel.nu/2012/03/ef-migrations-command-reference/ – 2013-04-26 21:31:14

+0

重要的一点是,这不仅仅是一个权限错误 – 2013-04-26 21:31:35

1

This error is only present while the .edmx file is open and disappears as soon as the file is closed again.

本报价由CodePlex,这个曾与我(的Visual Studio 2013/MVC 5)

+0

也与我一起工作。尝试关闭并重新打开edmx文件。工作。 – Rohit 2014-01-31 22:31:45

0

我有多个项目在水溶液,并添加到EF在不同的时间每个项目。在某些机器上它正在工作,并且在某些机器上出现上述错误。我花了一段时间来注意到我的一些项目的app.config中有这样:

<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework"> 
    <parameters> 
    <parameter value="v11.0" /> 
    </parameters> 
</defaultConnectionFactory> 

这是确定的,如果你使用的LocalDB(新“的SQL Express”等),但是完全错误的,如果你不具备该特定服务器已安装并使用常规SQL。

解决方法:删除上面的代码。

1

如果您使用EF Code First,另一个要考虑的事情是它有时不会自动创建支持数据库到您的DbContext类。解决方案是添加自己的连接字符串 - 可以使用可能存在的连接字符串来处理支持简单成员资格提供程序的用户/注册数据库作为模板。 最后,你将需要添加一个默认的构造函数为您创建的DbContext类:

public ChaletDb():base("ChaletConnection") 
    { 

    } 

这里,连接字符串的,你在你的web.config文件中输入的名称用于指示的DbContext创建数据库。 很偶尔,我不得不手动创建数据库(在SQL Server Management Studio中),它促使它工作。

0

这是因为连接到SQL服务器失败。

确保您正在运行进程的用户帐户有权访问SQL Server。

如果您从父线程生成了DbContext(如使用依赖注入),然后如果您正在模拟其他用户,则会发生此错误。解决方案是在新线程或新的模拟上下文中生成DbContext。

0

我刚关闭了Visual Studio的所有实例并重新打开了我的解决方案。

我不知道发生了什么,但我有两个不同的本地工作空间(一个使用本地修改,另一个使用未更改的存储库源代码)打开了相同的解决方案。我使用postgres数据库,实体框架6,Visual Studio 2013和ASP.NET MVC 5.

0

我有一个实体框架的错误,但上面的答案都没有结束适合最终工作的解决方案。

我的EntityFramework Code First Models和DataContext与我的WebAPI主项目在一个独立的项目中。我的实体框架项目的编码行被设置为启动项目,因此当我运行迁移时,我得到“提供程序没有返回ProviderManifestToken字符串”...连接问题。

原来,因为到数据库的ConnectionString位于WebAPI Main项目的Web.config文件中,所以当我运行迁移时,连接字符串未被检索到。通过将WebAPI项目设置为我的startProject,我能够成功连接。

相关问题