2014-12-10 2 views
0

Итак, я посмотрел записи с одинаковой ошибкой, и это не проблема, или я не понимаю ее.Проект Common Entity Framework «Поставщик базы данных не существует для провайдера ADO.NET»

У меня есть решение с несколькими проектами. Они используют общий Entity Frame Work 6 и включают в него ссылки. Проект WCF отлично работает с использованием Entity Frame для получения данных из базы данных. Но моя консольное приложение дает мне,

Нет Entity Framework поставщик найдено для поставщика ADO.NET с инвариантного названием «System.Data.SqlClient»

при выполнении тот же код, который вызывает Entity Framework.

Я думаю, что у меня что-то отсутствует в файле .config, но мои строки подключения все одинаковы.

Entity Framework App.Config:

<configuration> 
    <connectionStrings> 
    <add name="SafetyPortalEntities" connectionString="metadata=res://*/EntityModels.SafetyPortalModel.csdl|res://*/EntityModels.SafetyPortalModel.ssdl|res://*/EntityModels.SafetyPortalModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=ndmasdev;initial catalog=SafetyPortal;integrated security=True;multipleactiveresultsets=True;application name=EntityFramework&quot;" providerName="System.Data.EntityClient" /> 
    </connectionStrings> 
    <entityFramework> 
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" /> 
    <providers> 
     <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" /> 
    </providers> 
    </entityFramework> 
</configuration> 

WCF Web.config:

<configuration> 
    <connectionStrings> 
     <add name="SafetyPortalEntities" connectionString="metadata=res://*/EntityModels.SafetyPortalModel.csdl|res://*/EntityModels.SafetyPortalModel.ssdl|res://*/EntityModels.SafetyPortalModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=ndmasdev;initial catalog=SafetyPortal;integrated security=True;multipleactiveresultsets=True;application name=EntityFramework&quot;" providerName="System.Data.EntityClient" /> 
    </connectionStrings> 
</configuration> 

Консоль App.config:

<configuration> 
    <startup> 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /> 
    </startup> 
    <configSections> 
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> 
    </configSections> 
    <connectionStrings> 
    <add name="SafetyPortalEntities" connectionString="metadata=res://*/EntityModels.SafetyPortalModel.csdl|res://*/EntityModels.SafetyPortalModel.ssdl|res://*/EntityModels.SafetyPortalModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=ndmasdev;initial catalog=SafetyPortal;integrated security=True;multipleactiveresultsets=True;application name=EntityFramework&quot;" providerName="System.Data.EntityClient" /> 
    </connectionStrings> 
</configuration> 
+2

Я думаю, что EF app.config не используется во время выполнения. Вы пытались скопировать раздел конфигурации 'entityFramework' в консольный app.config? – Rhumborl

+0

Да, я попытался добавить части и из EF App.Config в Console App.Config, и это дает мне ошибку при попытке инициализировать объект EF. «Инициализатор типа для« System.Data.Entity.Internal.AppConfig »сделал исключение». Если я просто добавлю , он все равно выдаст исходную ошибку. – runfastman

ответ

0

Вы можете использовать менеджер пакетов консоли (Tools-> NuGet Пакет Manager-> Пакет менеджер консоли) и добавить рамки сущности в приложение консоли с помощью

install-package entityframework 

Не забудьте выбрать приложение консоли в умолчанию выпадающий проект в консоли диспетчера пакетов.

0

После долгих разочарований я, наконец, понял, что было неправильно.

Проект WCF автоматически включает ссылку на Entity Framework в ссылках, чтобы он работал нормально.

Консольное приложение не имеет ссылки EF, но при попытке добавить новую ссылку оно не отображается в списке параметров в любом месте и в том числе другой проект не содержит ссылки EF. (Я понятия не имею, почему). Поэтому я выбрал «EntityFramework» из ссылок в проекте EF, скопировал путь для него, а затем выполнил поиск в ссылках Project Project с пути из проекта EF.

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