@kofon
Я человек

Как поместить Entity в отдельный проект?

При добавлении ADO.NET Entity Data Model создаются объекты Entity. В конфиг добавляется строка подключения (и не только).
Если я создаю отдельный проект и в нём добавляю Entity, то там всё работает, если запускать тот проект.
Если же просто ссылаться на него, то происходят разные ошибки. Строка подключения добавлена!

Вопрос, как вы это делаете?

Вот ошибки:
1) Нужна connectionString
1b4e1ea08b7c4b0592de14892266a674.PNG
Добавил
d7b2c11d504b46ab9d5f91632194c6aa.PNG

2) Нужнен провайдер
cce2e115d7364ca6a1d2b3b2d56d8d43.PNG
Добавил
c17265d7c08b41eb8f71e94f5e22fe27.PNG

3) Непонятно, что нужно
40379bd1885c4289b50e07aa01e589e4.PNG

Ну и что добавлять?
Может я выше не то добавил? Просто взял из конфига в том проекте где Entity и вставил в конфиг вызываемого проекта.
Не так надо?
  • Вопрос задан
  • 422 просмотра
Решения вопроса 1
@kofon Автор вопроса
Я человек
Дополнено, есть ответ!

Вот внутренние исключения:
1)
521d66a03d9545b1a732cf8533a10281.PNG

2)
8cd57b42d8ab4192b003b5bb81f8bde8.PNG

Следующее null

==========

Ответ:

Эволюционируя, путём проб и ошибок (нашёл именно так), и поиска верного ответа на англоязычных форумах, добился выделения Entity в отдельный проект.

Итак:
Первый проект с Entity вместе с моделью .edmx (тип - библиотека).
Второй запускаемый проект (тип - веб или консоль).

1) Нужно в запускаемом проекте, кроме ссылки на первый, добавить ссылки ещё и на EntityFramework и EntityFramework.%Provider% (в моём случае EntityFramework.SqlServer), несмотря на то, что эти ссылки добавлены в первом проекте.
bf3a750d9f79484284e760109c0abf78.PNG

2) Нужно добавить в конфиг файл поле с <connectionStrings>, и больше нечего!
02a6ba0a40b84224bc651194d00e1848.PNG
Не добавляйте блок с entityFramework!

Это всё.
Кому помог, отпишитесь...
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@dmitryKovalskiy
программист средней руки
Создайте проект, в котором будете хранить наборы connectionString. Создайте проект в котором будет Entity и поставьте ссылку на стринги в другом проекте. Создайте Entity без добавления записей в конфиги(там есть галочка соответствующая), но сохранив куда-нибудь метаданные базы. Далее рядом с файлом Entity добавьте расширение через partial к классу контекста. В нем вам нужен метод Get без параметров, внутри него вы создаете EntityConnectionStringBuilder, в который из проекта с коннекшенами подсунете нужное соединение с базой данных, и метаданные, сохраненные заранее. Метод Get должен возвращать объект контекста, через ваш конструктор.
Примерно так
partial class MyContext{
public static MyContext Get()
{
var t = new EntityConnectionStringBuilder();
return new MyContext(t)
}
public MyContext(EntityConnectionStringBuilder ecsb):base(ecsb)
{

}

}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы