2017-01-03 20 views
0

Его очень специфическое сообщение об ошибке, но я не могу найти проблему.Не можете найти требуемый поставщик данных Net Framework

У меня есть служба Windows, которая должна взаимодействовать с базой данных, для этого я делаю следующее:

string provider = "Devart.Data.PostgreSql"; 
DbProviderFactory factory = DbProviderFactories.GetFactory(provider); 

Но он выходит из строя, что дает мне эту ошибку:

System.ArgumentException: Unable to find the requested .Net Framework Data Provider. It may not be installed. at System.Data.Common.DbProviderFactories.GetFactory(String providerInvariantName)

Я пытался переместите Devart.Data.PostgreSql.dll в папку bin, но результаты будут одинаковыми.

Затем я проверил мой machine.config, и у меня есть это:

<add name="dotConnect for PostgreSQL" 
    invariant="Devart.Data.PostgreSql" 
    description="Devart dotConnect for PostgreSQL" 
    type="Devart.Data.PostgreSql.PgSqlProviderFactory, Devart.Data.PostgreSql, Version=7.4.506.0, Culture=neutral, PublicKeyToken=09af7300eec23701" /> 

Так выглядит правильно, я не нашел какие-либо пустые тегов, обнаружил, что в других SO постов, говоря, что удаление этих тегов когда пустая могла решить проблему, но у меня ее не было.

Так что я не знаю, в чем проблема.

Я также создал консольный проект, который использует ту же версию .NET, и с точным кодом:

string provider = "Devart.Data.PostgreSql"; 
DbProviderFactory factory = DbProviderFactories.GetFactory(provider); 

И это работает. Кто-нибудь знает, что это может быть?

+0

Где происходит ошибка? Это на линии DbProviderFactory factory = DbProviderFactories.GetFactory (поставщик); – Woot

+0

Да. Ошибка возникает в этой строке. – alface

+0

И вы добавили Devart.Data.PostgreSql.dll в качестве ссылки на свой проект? – Woot

ответ

0

Я уже давно использую библиотеки DevArt, и, хотя я не сталкивался с вашей конкретной проблемой, могу сказать, что код , развернутый, требует добавления файла лицензии.

Следует назвать licenses.licx и выглядеть следующим образом:

Devart.Data.PostgreSql.PgSqlConnection, Devart.Data.PostgreSql 

Добавьте его в свой проект в качестве внедренного ресурса. Если вы добавите его, подумайте: «Где он ушел?» : он не будет отображаться в вашем браузере решений даже после того, как вы его добавите, если вы не нажмете кнопку «Показать все».

Вам потребуется следующее в вашем файле конфигурации:

<entityFramework> 
    <providers> 
     <provider invariantName="Devart.Data.PostgreSql" type="Devart.Data.PostgreSql.Entity.PgSqlEntityProviderServices,Devart.Data.PostgreSql.Entity.EF6, Version=7.6.743.0, Culture=neutral, PublicKeyToken=09af7300eec23701" /> 
    </providers> 
    </entityFramework> 

    <system.data> 
    <DbProviderFactories> 
     <remove invariant="Devart.Data.PostgreSql" /> 
     <add name="dotConnect for PostgreSQL" invariant="Devart.Data.PostgreSql" description="Devart dotConnect for PostgreSQL" type="Devart.Data.PostgreSql.PgSqlProviderFactory, Devart.Data.PostgreSql, Version=7.6.743.0, Culture=neutral, PublicKeyToken=09af7300eec23701" /> 
    </DbProviderFactories> 
    </system.data> 

Если вы не получите номер версии прямо на LIBS у вас есть это не будет работать, так что проверить это. Щелкните правой кнопкой мыши Devart.Data.Postgresql.dll и выберите «Свойства», «Сведения», чтобы получить правильный номер ver.

Если это не помогает, обратитесь в службу технической поддержки DevArt. Они действительно полезны, даже если вы используете только пробную версию своих библиотек.

HTH,

Adam.

+0

Почти забыл - убедитесь, что для параметра «Копировать местное» установлено значение true для ваших devart libs в вашем проекте. –

 Смежные вопросы

  • Нет связанных вопросов^_^