2011-03-24 40 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,我能夠成功連接。

相關問題