Để thêm vào các lý do khác.
Tôi đã có giải pháp VS2010/csproj đã tham chiếu Thư viện doanh nghiệp 5.0.xxxxx.
Tuy nhiên, csproj được đặt thành "Target 3.5 Framework". Vì vậy, tôi hoặc là cần thiết để nhắm mục tiêu khuôn khổ 4.0 hoặc đi xuống "xuống" phiên bản 3.5 của Thư viện doanh nghiệp.
Tôi đã có thể cập nhật khung đích của mình thành 4.0 và sau đó các lỗi đã biến mất.
Dưới đây là những gì bạn có thể làm để tìm ra những gì phiên bản khung mã đã được biên soạn cho: (mini kịch bản Powershell)
[System.Reflection.Assembly]::LoadFrom("c:\somefolder\Any_Of_The_Practices.dll").ImageRuntimeVersion
Nếu bạn nhận được v2.0.50727, sau đó bạn sẽ gặp khó khăn khi chạy dưới Framework 4.0 (hoặc cao hơn).
EDIT:
Tôi cũng gặp lỗi này do không xác định đúng "DbProviderFactories". Tôi đăng một cấu hình MySql mà tôi tìm thấy tại URL này: (Tôi sao chép nó, trong trường hợp URL chết trong tương lai)
(Từ http://searchcode.com/codesearch/view/14385662)
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="dataConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings, Microsoft.Practices.EnterpriseLibrary.Data, Version=5.0.505.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="true"/>
</configSections>
<system.data>
<DbProviderFactories>
<add name="EntLibContrib.Data.MySql"
invariant="EntLibContrib.Data.MySql"
description="EntLibContrib Data MySql Provider"
type="EntLibContrib.Data.MySql.MySqlDatabase, EntLibContrib.Data.MySql, Version=5.0.505.0, Culture=neutral, PublicKeyToken=null" />
</DbProviderFactories>
</system.data>
<dataConfiguration defaultDatabase="Default Connection String">
<providerMappings>
<add databaseType="EntLibContrib.Data.MySql.MySqlDatabase, EntLibContrib.Data.MySql, Version=5.0.505.0, Culture=neutral, PublicKeyToken=null"
name="EntLibContrib.Data.MySql"/>
</providerMappings>
</dataConfiguration>
<connectionStrings>
<add name="Default Connection String"
connectionString="database=northwind;uid=root;pwd=admin"
providerName="EntLibContrib.Data.MySql"/>
</connectionStrings>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>
</configuration>
Cuối cùng:
Khi tôi gặp lỗi này vì tôi không có ConnectionString (trong tệp cấu hình) có cùng tên với giá trị defaultDatabase. Aka, lỗi "hộp sọ tê" đơn giản.
Bạn có thể đặt mã van an toàn này vào (ngay trước khi bạn tạo cơ sở dữ liệu) nếu bạn muốn.
DatabaseSettings dataConfig = (DatabaseSettings)ConfigurationManager.GetSection("dataConfiguration");
string configDefaultDatabase = string.Empty;
if (null != dataConfig)
{
configDefaultDatabase = dataConfig.DefaultDatabase;
if (!String.IsNullOrEmpty(configDefaultDatabase))
{
ConnectionStringSettingsCollection connections = ConfigurationManager.ConnectionStrings;
if (null == connections[configDefaultDatabase])
{
throw new ArgumentOutOfRangeException(
string.Format(
"Your dataConfiguration (DefaultDatabase) does not match any of your connection strings. DefaultDatabase='{0}'.",
configDefaultDatabase));
}
}
}
bất kỳ ai ở đây có thể trợ giúp? –
Tệp cấu hình có thể là với dự án thử nghiệm, nhưng tôi không chắc liệu tệp đó có hoạt động hay không. Bạn đang sử dụng khung kiểm tra nào? –
vâng, tôi đã tự tìm ra rằng tôi đã tham khảo bản sao không đúng. nó hoạt động ngay bây giờ, nhờ sự giúp đỡ./ –