Как настроить Entity framework в проекте библиотеки классов
Я создал проект библиотеки классов, содержащий объект entity framework, который будет отвечать за общий уровень доступа к данным для моего множественного проекта.после добавления сгенерированного dll-файла в проект моего домена и использования объекта сущности из проекта библиотеки классов, im сталкивается со следующей проблемой.
строка подключения с именем " ABC " не может быть найдена в файле конфигурации приложения.
Я установил свойство обработки артефактов метаданных edmx в встраивание в выходную сборку
App.Разметка конфигурации
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
<connectionStrings>
<add name="ABC" connectionString="metadata=res://*/Entity.ABC.csdl|res://*/Entity.ABC.ssdl|res://*/Entity.ABC.msl;provider=System.Data.SqlClient;provider connection string="data source=(LocalDB)v11.0;attachdbfilename=|DataDirectory|ABC.mdf;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
</connectionStrings>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
</entityFramework>
</configuration>
и код сущностей следующий
public ABC_IntegrationEntities()
: base("name=ABC")
{
}
еще одна вещь, к которой я обращаюсь к базе данных из datadirectiory "App_Data"
я ссылаюсь на блог из dotnetcurry.com.
http://www.dotnetcurry.com/showarticle.aspx?ID=617
спасибо заранее!
4 ответов
на основе ссылке вы дали, вероятно, вы пропустите эту часть.
вы можете создать свой собственный .файл config в этот проект и добавьте запись connectionstring вашей модели или просто скопировать приложение.файл конфигурации, созданный в проекте MyEntityModel, в проект консольного приложения. Мы примем более простой способ. Правый клик проект > Добавить Существующий Элемент > перейти к MyEntityModel проект и добавьте приложение.конфигурационный файл.
объяснение:
когда вы создаете библиотеку, и на библиотеку ссылаются из другого проекта, EF будет читать конфигурацию, относящуюся к запуску проекта. Вы можете сделать одно из следующих действий.
- скопируйте конфигурацию из конфигурации библиотеки (скопируйте файл и вставьте его, чтобы запустить проект)
- создайте новую конфигурацию, но скопируйте информацию о строке подключения и другие связанные с EF раздел
- добавить существующую конфигурацию, добавив существующий элемент и добавьте его как ссылку на конфигурацию библиотеки
Я работал над созданием библиотеки классов, которая реализует все функции EF (Entity Framework) и следовал процессу, описанному в http://www.dotnetcurry.com/showarticle.aspx?ID=617 но все же это давало ошибки.
проблема заключалась в несоответствии версий между EF framework и .Net framework. Я использовал .Net framework 5.0, но версия EF была 6.0. После обновления последней версии .Net framework все начало работать хорошо. Всегда обеспечьте EF и Версии Dll + EF и тестовых проектов всегда одинаковы.
Я также загрузил и установил EFTools6.1.3ForVS2013, если это кому-то поможет. Другое дело, чтобы помнить, что вы должны установить Entity Framework из Nuget во всех проектах, которые ссылаются на Dll EF и копировать connectionstring из файла конфигурации Dll в файле конфигурации тестового проекта.
надеюсь, это кому-то поможет !!! Спасибо,
скопируйте строку подключения SQL из файла конфигурации проекта библиотеки и вставьте ее в файл конфигурации основного проекта, который является вашим проектом запуска. Что решит вашу проблему.
кроме того, скопируйте DbProviderFactories из проекта библиотеки в файл конфигурации основного проекта.
измените имя строки подключения сущности, которую вы используете в конструкторе вашего класса контекста:
public ABC_IntegrationEntities()
: base("name=Gumu_IntegrationEntities")
{
}
убедитесь, что файл конфигурации приложения добавлен в сборку, из которой выполняется код, i.e app.config
из вас PE web.config
вашего сайта