17

實體框架6.0.1 我的App.config:實體框架:提供程序未返回providermanifest實例

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <configSections> 
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --> 
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> 
    </configSections> 
    <startup> 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" /> 
    </startup> 
    <entityFramework> 
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" /> 
    <providers> 
     <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" /> 
    </providers> 
    </entityFramework> 
    <connectionStrings> 
    <add name="MyDataContext" connectionString="Data Source=MyDb;Initial Catalog=mycatalog;Persist Security Info=True;User ID=admin;Password=123;MultipleActiveResultSets=True" 
     providerName="System.Data.SqlClient" /> 
    </connectionStrings> 
</configuration> 

而且MyDataContext類使用EF:

public partial class MyDataContext: DbContext 
{ 
    static MyDataContext() 
    { 
     Database.SetInitializer<MyDataContext>(null); 
    } 

    public MyDataContext() 
     : base("MyDataContext") 
    { 
    } 
} 

創建上下文,但當我試圖得到任何實體或做任何事情與數據庫它拋出異常

using (var db = new MyDataContext()) 
{ 
    var exists = db.Database.Exists(); 
} 

例外是

System.Data.ProviderIncompatibleException: The provider did not return a providermanifest instance 
StackTrace: 
    in System.Data.Common.DbProviderServices.GetProviderManifest(String manifestToken) 
    in System.Data.Entity.ModelConfiguration.Utilities.DbConnectionExtensions.GetProviderInfo(DbConnection connection, DbProviderManifest& providerManifest) 
    in System.Data.Entity.DbModelBuilder.Build(DbConnection providerConnection) 
    in System.Data.Entity.Internal.LazyInternalContext.CreateModel(LazyInternalContext internalContext) 
    in System.Data.Entity.Internal.RetryLazy`2.GetValue(TInput input) 
    in System.Data.Entity.Internal.LazyInternalContext.InitializeContext() 
    in System.Data.Entity.Internal.InternalContext.CreateObjectContextForDdlOps() 
    in System.Data.Entity.Database.Exists() 

與內部異常:

System.Configuration.ConfigurationErrorException: Configuration system failed to initialize 
StackTrace: 
    в System.Configuration.ClientConfigurationSystem.OnConfigRemoved(Object sender, InternalConfigEventArgs e) 
    в System.Configuration.Internal.InternalConfigRoot.RemoveConfigImpl(String configPath, BaseConfigurationRecord configRecord) 
    в System.Configuration.BaseConfigurationRecord.GetSectionRecursive(String configKey, Boolean getLkg, Boolean checkPermission, Boolean getRuntimeObject, Boolean requestIsHere, Object& result, Object& resultRuntimeObject) 
    в System.Configuration.BaseConfigurationRecord.GetSection(String configKey) 
    в System.Configuration.ConfigurationManager.GetSection(String sectionName) 
    в System.Xml.Schema.Parser..ctor(SchemaType schemaType, XmlNameTable nameTable, SchemaNames schemaNames, ValidationEventHandler eventHandler) 
    в System.Xml.Schema.XmlSchema.Read(XmlReader reader, ValidationEventHandler validationEventHandler) 
    в System.Data.Entity.Core.SchemaObjectModel.Schema.SomSchemaSetHelper.AddXmlSchemaToSet(XmlSchemaSet schemaSet, XmlSchemaResource schemaResource, HashSet`1 schemasAlreadyAdded) 
    в System.Data.Entity.Core.SchemaObjectModel.Schema.SomSchemaSetHelper.ComputeSchemaSet(SchemaDataModelOption dataModel) 
    в System.Data.Entity.Core.Common.Utils.Memoizer`2.<>c__DisplayClass2.<Evaluate>b__0() 
    в System.Data.Entity.Core.Common.Utils.Memoizer`2.Result.GetValue() 
    в System.Data.Entity.Core.Common.Utils.Memoizer`2.Evaluate(TArg arg) 
    в System.Data.Entity.Core.SchemaObjectModel.Schema.SomSchemaSetHelper.GetSchemaSet(SchemaDataModelOption dataModel) 
    в System.Data.Entity.Core.SchemaObjectModel.Schema.CreateXmlReaderSettings() 
    в System.Data.Entity.Core.SchemaObjectModel.Schema.Parse(XmlReader sourceReader, String sourceLocation) 
    в System.Data.Entity.Core.SchemaObjectModel.SchemaManager.ParseAndValidate(IEnumerable`1 xmlReaders, IEnumerable`1 sourceFilePaths, SchemaDataModelOption dataModel, AttributeValueNotification providerNotification, AttributeValueNotification providerManifestTokenNotification, ProviderManifestNeeded providerManifestNeeded, IList`1& schemaCollection) 
    в System.Data.Entity.Core.SchemaObjectModel.SchemaManager.ParseAndValidate(IEnumerable`1 xmlReaders, IEnumerable`1 sourceFilePaths, SchemaDataModelOption dataModel, DbProviderManifest providerManifest, IList`1& schemaCollection) 
    в System.Data.Entity.Core.SchemaObjectModel.SchemaManager.LoadProviderManifest(XmlReader xmlReader, String location, Boolean checkForSystemNamespace, Schema& schema) 
    в System.Data.Entity.Core.Common.DbXmlEnabledProviderManifest.Load(XmlReader reader) 
    в System.Data.Entity.Core.Common.DbXmlEnabledProviderManifest..ctor(XmlReader reader) 
    в System.Data.Entity.SqlServer.SqlProviderManifest..ctor(String manifestToken) 
    в System.Data.Entity.SqlServer.SqlProviderServices.GetDbProviderManifest(String versionHint) 
    в System.Data.Entity.Core.Common.DbProviderServices.GetProviderManifest(String manifestToken) 

and it with inner exception: 

System.Configuration.ConfigurationErrorException: Unknown configuration section userSettings. (C:\\Users\\Tema\\AppData\\Local\\Mgr\\Mgr.vshost.exe_Url_slqi2aqp0duilazpy21vojhl3ssnjluh\\1.0.0.0\\user.config line 3) 
StackTrace: 
    в System.Configuration.ConfigurationSchemaErrors.ThrowIfErrors(Boolean ignoreLocal) 
    в System.Configuration.BaseConfigurationRecord.ThrowIfParseErrors(ConfigurationSchemaErrors schemaErrors) 
    в System.Configuration.ClientConfigurationSystem.OnConfigRemoved(Object sender, InternalConfigEventArgs e) 

也許任何人都遇到過這個問題嗎?謝謝。

+2

我UserSettings'C剛剛刪除的文件:\\ \\用戶\\特馬AppData的\\ \\本地經理\\ Mgr.vshost.exe_Url_slqi2aqp0duilazpy21vojhl3ssnjluh \ \ 1.0.0.0 \\ user.config' 它解決了我的問題 – Temaska

回答

9

如果數據庫的登錄信息無效或者服務器未找到或位於防火牆後面(基本上,程序無法連接到數據庫),則可能會拋出此異常。通常它帶有一個內部異常,它會告訴你更多關於發生了什麼事情。一定要檢查這一點。這個錯誤可能還有其他原因,但這是我認爲最有可能的原因。

另外,你使用SQL或Windows身份驗證?如果您使用的是SQL身份驗證,請嘗試將integrated security=False添加到您的連接字符串中。

+0

感謝回覆,我正在使用SQL身份驗證,並嘗試與'集成安全=假',但我總是有這個錯誤 – Temaska

+0

你確定你的'數據源='在連接字符串中是否正確? 'MyDb'聽起來像數據庫名稱,但這應該是計算機的名稱和服務器的實例(類似於'mydbserver \ sqlexpress')。另外,請嘗試使用相同的憑據連接到數據庫,並使用SQL Server Management Studio等相同的計算機連接到該數據庫。如果這不起作用,這可能永遠不會。 – Steve

+0

我敢肯定,我連接到數據庫通過服務器資源管理器,只是複製ConnectionString,然後只是更改此問題的servername \ dbname \ login \ password .. – Temaska

59

在我而言,我不得不破解的.edmx文件並更改ProviderManifestToken = 「2008」

  1. 打開Model.edmx編輯器
  2. 更改ProviderManifestToken = 「2012」 到ProviderManifestToken =」 2008" 年

Model.edmx hack

+1

這對我有效。謝謝!你怎麼知道這件事? – CowboyBebop

+2

令人驚歎。這工作。 :) 非常感謝!我也想知道你是怎麼想出來的! – Greg

+0

這也適用於我,是否有解釋這個問題? –

8

改變了ProviderManifestToken從2012年和2008年的屬性值和所有工作得很好。

記得開.edmx文件的XML文件

相關問題