EF 4.1exception“提供程序没有返回ProviderManifestTokenstring”
我正在尝试复制在MSDN上find的示例。 我正在使用ASP.NET和EF 4.1(CTP?)。 我已经使用NuGet来安装EntityFramework软件包。
我得到这个错误: The provider did not return a ProviderManifestToken string
…和数据库永远不会被创build。
这是我的连接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。
我得到这个错误,并尝试了一些早先的build议。 然后我检查了内部exception,并注意到我得到了一个简单的SQLlogin失败的用户。 只是别的要检查。
当您将连接string放在Visual Studio中错误项目的app.config中时,可能会发生这种情况。
例如,我在EF 4.1(发布版本)项目+ WCF数据服务项目中遇到了这个问题,我注意到我没有在数据服务项目中指定的连接string。
我有同样的错误,实际上是指定的服务器login失败。 我从configuration连接string中删除“集成安全性”属性,它的工作。
我有同样的问题,我添加下面的代码刚刚我的上下文的实例(例如onload)
context.Database.Connection.ConnectionString = @"Data Source=.\SQLExpress;Initial Catalog=Test;Integrated Security=True";
我有一个与MvcMusicStore应用程序类似的问题。 我将Web.config中的一行从“Instance = true”更改为“Instance = false”。 它有时没有这个调整,但我不知道是什么原因造成的差异。 阅读此http://msdn.microsoft.com/en-us/library/ms254504.aspx并没有真正的帮助。;
由于某些权限的原因,EF无法创build数据库连接。 我一整天都面临同样的问题。 最后,我尝试了下面的解决scheme,它的工作原理:a /打开IIS(我正在使用IIS 7)b /打开web站点正在使用的appool的高级设置(例如:DefaultAppPool)c /看看Process Model组,到“本地系统”
希望它能和你一起工作。
我只是有同样的问题…
为我工作的解决scheme是:
运行客户端networkingconfiguration工具(在运行中键入cliconfg)
并确保TCP / IP已启用。
我终于破解了它 – 在一个轻微的大雁追逐之后,认为这是由于权限。
启示录:USE SQL PROFILER
(注:我最近从EF6降级到EF5)
使用SQL事件探查器,我很快find了报告失败之前执行的最后一个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
表格 – 我甚至没有意识到它已经创build(我已经在CSPROJ中清除了迁移)并清除了这个表格。
所以我拉起那张表的行,看它是绑定到一个特定的产品版本(v6)。
我实际上从EF6(我并不打算安装在第一位)降级到EF5(这与脚手架更兼容),并且在问题开始时。
我的猜测是Model (<Binary data>)
列不向后兼容 – 因此, The provider did not return a ProviderManifest instance
错误,因为它无法解码它。
我没有任何东西可以丢失,只是彻底清除了这个表格,然后运行了Update-Database -Verbose
,然后恢复运行。
如果您处于高级环境中或者已经在生产中,那么抹掉这张桌子可能不是解决办法,但是这样可以让我马上恢复工作。
在使用EF4.1和ASP.NET MVC的Visual Studio 11 Beta时,我差点把头发拉出来,直到find
为了解决我的问题,我进入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”);
该错误仅在.edmx文件处于打开状态时才存在,并且只要文件再次closures就会消失。
CodePlex这个引用,这与我(Visual Studio 2013 / MVC 5)
我在解决scheme中有多个项目,并在不同的时间将EF添加到每个项目。 在一些机器上它正在工作,并在一些上述错误失败。 我花了一段时间才注意到我的一些项目的app.config有这个:
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework"> <parameters> <parameter value="v11.0" /> </parameters> </defaultConnectionFactory>
如果你使用LocalDb(新的“sql express”就好),但是如果你没有安装特定的服务器并且使用一个常规的SQL,这是完全错误的。
解决scheme:删除上面的代码。
如果您使用EF Code First,另一个要考虑的事情是,它有时不会自动为您的DbContext类创build后备数据库。 解决方法是添加自己的连接string – 可以使用可能存在的连接string来处理支持简单成员资格提供程序的用户/注册数据库(作为模板)。 最后,您将需要为您创build的DbContext类添加一个默认构造函数:
public ChaletDb():base("ChaletConnection") { }
在这里,你在web.config文件中input的连接string的名字被用来指导DbContext来创build数据库。 偶尔,我不得不手动创build数据库(在SQL Server Management Studio中),它促使它工作。
这是因为连接到SQL服务器失败。
确保您正在运行进程的用户帐户有权访问SQL Server。
如果你已经从父线程生成了DbContext(就像使用dependency injection),然后如果你正在冒充另一个用户,那么这个错误就会发生。 解决办法是在新线程或新的模拟上下文中生成DbContext。
我刚刚closures了Visual Studio的所有实例,并重新打开了我的解决scheme。
我不知道发生了什么,但是我有两个不同的本地工作空间(一个使用本地修改,一个使用未更改的存储库源代码)打开了相同的解决scheme。 我使用postgres数据库,entity framework6,Visual Studio 2013和ASP.NET MVC 5。
我有一个entity framework的错误,但没有一个上述答案结束了适应终于工作的解决scheme。
我的EntityFramework Code First Models和DataContext与我的WebAPI主项目在一个独立的项目中。 我的entity framework项目的编码行被设置为启动项目,因此当我运行一个迁移时,我得到“提供程序没有返回ProviderManifestTokenstring”…连接问题。
事实certificate,由于到数据库的连接string位于WebAPI主项目的Web.config文件中,当我运行迁移时,连接string不被检索。 通过设置WebAPI项目作为我的startProject我能够成功连接。
- 如何禁用entity framework6.0中的迁移
- LINQ to Entities不识别方法'Int32 Parse(System.String)'方法,并且此方法不能被转换成存储expression式
- 在Python中将XML / HTML实体转换为Unicodestring
- 为什么我们需要实体对象?
- Hibernate中的persist()和merge()有什么区别?
- cascade = {“remove”} VS orphanRemoval = true VS ondelete =“CASCADE
- entity framework – 有没有一种方法来自动加载没有包含()的子实体?
- 在HTML中,我可以用&#x2713; 。 有没有相应的X标记?
- JPA,如何使用相同的类(实体)映射不同的表?