Не удается разрешить фабрику поставщика SQL Server CE по имени инварианта - PullRequest
0 голосов
/ 05 мая 2009

Эта строка кода

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

выдает это исключение

System.Configuration.ConfigurationErrorsException: Не удалось найти или загрузить зарегистрированный Поставщик данных .Net Framework.

Хотя мой файл machine.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 отлично работает.

Ответы [ 2 ]

2 голосов
/ 27 мая 2009

Есть несколько установок SQL Server CE . Инструменты Visual Studio предоставляют обозреватель серверов и компоненты проектирования и размещают библиотеки DLL SQL Server CE в расположении, локальном по отношению к Visual Studio. Мне нужно было установить runtime , чтобы зарегистрировать провайдера данных в файле machine.config.

1 голос
/ 29 сентября 2013

В 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();

Примечание : любой код публикуется в открытом доступе. Указание авторства не требуется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...