簡體   English   中英

如何在連接字符串中為EF CodeFirst配置ProviderManifestToken

[英]How to configure ProviderManifestToken for EF CodeFirst in a Connection String

目前,我正在將數據庫名稱傳遞給DbContext的構造DbContext App.Config文件的connectionStrings部分中,我添加了一個連接字符串並指定了提供程序名稱:

<connectionStrings>
    <add name="myConnectionString" connectionString="[..]" providerName="System.Data.SqlClient"/>
</connectionStrings>

現在,我想從其他類型的配置源中獲取連接字符串,但是會拋出ProviderIncompatibleException 異常包含以下消息:

"The provider did not return a providermanifesttoken string".

那么,如何在連接字符串中指定提供者名稱? 目前,我的字符串包含data sourcedatabase和其他一些配置設置。

提供者由連接的類型定義,並且連接由其連接工廠創建,該連接工廠在靜態屬性Database.DefaultConnectionFactory設置。 此屬性的默認值為SqlConnectionFactory因此,除非您連接到其他數據庫服務器(例如SQL Server CE),否則它應該可以正常工作。 如果不確定,請確保您的連接字符串正確。 如果EF無法連接到SQL Server,則有時會引發此異常(我認為我看到此異常的原因是憑據無效,數據庫名稱無效或SQL Server實例名稱無效)。

編輯:

為了完整性:僅當您將連接字符串傳遞給上下文時,才使用連接工廠。 您還可以傳遞整個連接實例,並且將不使用連接工廠。 提供者清單令牌將從您傳遞給上下文的連接類型中推斷出來。

這可能不是您的問題,但是如果您根本無法連接到數據庫,也會發生此錯誤-我們的網絡阻塞了端口1433。打開它,錯誤就消失了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM