سؤال

هذا السطر من التعليمة البرمجية

DbProviderFactory factory = DbProviderFactories.GetFactory("Microsoft.SqlServerCe.Client");

يلقي هذا الاستثناء

النظام.التكوين.ConfigurationErrorsException:فشلت في العثور على أو تحميل المسجلين .Net Framework موفر البيانات.

على الرغم من أن الجهاز الخاص بي.config يحتوي المقطع التالي

<system.data>
  <DbProviderFactories>
    <add name="OracleClient Data Provider" invariant="System.Data.OracleClient" description=".Net Framework Data Provider for Oracle" type="System.Data.OracleClient.OracleClientFactory, System.Data.OracleClient, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
    <add name="SqlClient Data Provider" invariant="System.Data.SqlClient" description=".Net Framework Data Provider for SqlServer" type="System.Data.SqlClient.SqlClientFactory, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
    <add name="SQL Server CE Data Provider" invariant="Microsoft.SqlServerCe.Client" description=".NET Framework Data Provider for Microsoft SQL Server 2005 Compact Edition" type="Microsoft.SqlServerCe.Client.SqlCeClientFactory, Microsoft.SqlServerCe.Client, Version=9.0.242.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
  </DbProviderFactories>
</system.data>

أنا في عداد المفقودين شيئا ؟ ينبغي أن ننظر في مكان آخر ؟ رمز مثل DbProviderFactory factory = SqlCeProviderFactory.Instance يعمل بشكل جيد.

هل كانت مفيدة؟

المحلول

وهناك متعددة SQL خادم CE تثبيت . و أدوات Visual Studio يوفر المستكشف الخادم ومكونات التصميم ويضع دلس SQL خادم CE في موقع محلي إلى Visual Studio. كنت بحاجة إلى تثبيت وقت للحصول على مزود البيانات المسجلة في الملف machine.config.

نصائح أخرى

في Visual Studio 2012 ، الافتراضي يكون providername هو System.Data.SqlServerCe.4.0.

هذا يتيح لي العثور على مصنع بالاسم:

String providerName = "System.Data.SqlServerCe.4.0";

DbProviderFactory factory = DbProviderFactories.GetFactory(providerName);
if (factory == null)
   throw new Exception("Unable to locate factory for " + providerName);

DbConnection conn = factory.CreateConnection();
conn.ConnectionString = connectionString;
conn.Open();

ملاحظة:أي قانون صدر في المجال العام.لا إسناد المطلوبة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top