Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# и базы данных, ADO.NET
Войти
Регистрация
Восстановить пароль
 
Alex_trader
3 / 3 / 5
Регистрация: 11.11.2015
Сообщений: 413
#1

EF использование одного ApplicationDbContext в двух проектах - C#

20.08.2017, 12:45. Просмотров 230. Ответов 8
Метки нет (Все метки)

Доброго времени суток коллеги.
http://www.cyberforum.ru/csharp-net/thread2038478.html
Есть ASP Core проект использующий EF для доступа к БД. Стала необходимость в создании еще одного проекта в данном решении, которое должно использовать контекст работы с БД из первого проекта, как возможно это сделать, если просто ссылку дать на класс контекста первого проекта - не взлетит, подскажите пожалуйста.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.08.2017, 12:45
Я подобрал для вас темы с готовыми решениями и ответами на вопрос EF использование одного ApplicationDbContext в двух проектах (C#):

MySql использование одного подключения для нескольких запросов
Есть Form1 на ней есть dataTimePicker1. Form1 подписана на событие: ...

Использование одного файла с кодом в проектах на C# и C
Может кто подскажет как решить задачу. Имею устройство сделанное на arduino....

Использование окна в двух проектах
Здравствуйте! Как можно использовать окно в двух проектах в пределах одного...

Использование одного метода в двух активити
Добрый день. Подскажите такой вопрос: как можно использовать один метод для...

Использование одного вектора вместо двух
Такое задание: Определить класс, который хранит и строку и значение. И для...

8
kolorotur
Эксперт .NET
9916 / 8301 / 2037
Регистрация: 17.09.2011
Сообщений: 14,285
20.08.2017, 12:50 #2
Вынесите всю работу с базой в отдельную сборку и цепляйте ее в обоих проектах.
0
Alex_trader
3 / 3 / 5
Регистрация: 11.11.2015
Сообщений: 413
20.08.2017, 13:29  [ТС] #3
Думаю это дорого по времени получится, т.к. придётся вырезать EF с первого проекта и делать кучу рефакторинга...

Добавлено через 1 минуту
kolorotur, в первом проекте так же миграции имеются, не представляю как это всё переносится в отдельный проект без потерь...

Добавлено через 6 минут
kolorotur, в данный момент дабы решить задачу, хочу добавить ссылку на проект и использовать контекст БД из первого проекта, подскажите как это правильно сделать? Ссылку на проект сделал, как теперь в контроллере нового проекта получить контекст из первого?
0
kolorotur
Эксперт .NET
9916 / 8301 / 2037
Регистрация: 17.09.2011
Сообщений: 14,285
20.08.2017, 13:31 #4
Цитата Сообщение от Alex_trader Посмотреть сообщение
Думаю это дорого по времени получится
Максимум — обновить пространства имен в "старом" проекте, если планируется использовать другое пространство в сборке.

Цитата Сообщение от Alex_trader Посмотреть сообщение
придётся вырезать EF с первого проекта и делать кучу рефакторинга
Зачем кучу? Надо только перенести контекст и модель (по уму надо бы модель вынести в свою, отдельную сборку, ну да бог с ней). В оригинальном проекте ничего не должно изменяться, кроме разве что вышеупомянутых пространств.

Цитата Сообщение от Alex_trader Посмотреть сообщение
в первом проекте так же миграции имеются
Миграция — это часть работы с базой, потому и быть должна в сборке с базой.
0
Usaga
20.08.2017, 13:31
  #5

Не по теме:

Цитата Сообщение от Alex_trader Посмотреть сообщение
Думаю это дорого по времени получится, т.к. придётся вырезать EF с первого проекта и делать кучу рефакторинга...
Вооот. Пожинаете плоды хреновой архитектуры. Будет вам ценный урок.

0
kolorotur
Эксперт .NET
9916 / 8301 / 2037
Регистрация: 17.09.2011
Сообщений: 14,285
20.08.2017, 13:34 #6
Цитата Сообщение от Alex_trader Посмотреть сообщение
в данный момент дабы решить задачу, хочу добавить ссылку на проект и использовать контекст БД из первого проекта
Не стоит этого делать — тот еще омут.
Через пару дней вам потребуется добавить ссылку на второй проект в первый проект и все — приплыли, циклическая зависимость.

Как говорится, если оказались в яме, то первым делом — прекратите копать глубже.
Лучше потратить немного времени на нормальную организацию, чем продолжать создавать "снежный ком" проблем.
0
Alex_trader
3 / 3 / 5
Регистрация: 11.11.2015
Сообщений: 413
20.08.2017, 13:57  [ТС] #7
kolorotur, Вас понял, можете на пальцах объяснить как вынести EF в отдельный проект быстро и без каких либо потерь и без надобности рефакторить существующий код?

Добавлено через 1 минуту
Первым делом, как понимаю, создаю новый проект - типа библиотека классов, но как потом сюда существующую БД перенести?

Добавлено через 2 минуты
Так же в первом проекте имеется куча DTO классов - для них делается отдельная библиотека или все в одну новую сложить?
0
kolorotur
Эксперт .NET
9916 / 8301 / 2037
Регистрация: 17.09.2011
Сообщений: 14,285
20.08.2017, 14:11 #8
Лучший ответ Сообщение было отмечено Alex_trader как решение

Решение

Цитата Сообщение от Alex_trader Посмотреть сообщение
как потом сюда существующую БД перенести?
Выделяете все нужные файлы в обозревателе решения и перетаскиваете их в новый проект.
Потом удаляете эти файлы в старом проекте.
В новом проекте подцепляете все необходимые зависимости: EntityFramework и иже с ним.
В старом проекте добавляете ссылку на новый проект.
Где надо изменяете юзинги на новое пространство с базой.

Цитата Сообщение от Alex_trader Посмотреть сообщение
в первом проекте имеется куча DTO классов - для них делается отдельная библиотека или все в одну новую сложить?
Я за новую библиотеку — тогда их можно будет использовать в новых проектах и не тянуть зависимость к EF.
1
Alex_trader
3 / 3 / 5
Регистрация: 11.11.2015
Сообщений: 413
21.08.2017, 08:00  [ТС] #9
kolorotur, В основном проекте есть класс заполняющий начальными значениями БД, он тоже должен переехать в библиотеку?

Добавлено через 14 часов 52 минуты
kolorotur, Спасибо за помощь, работает)
0
21.08.2017, 08:00
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.08.2017, 08:00
Привет! Вот еще темы с решениями:

Использование двух источников для одного label
Имеется база данных с таблицами "Заказы" (Заказчик, Товар, Количество) и...

Использование одного профиля по умолчанию для двух пользователей AD
На хосте с семеркой создал профиль по умолчанию методом копирования, перекинул...

Использование ASM в проектах на Си
Привет народ. Прочел тут статейку об использовании ассемблера в языках высокого...

Использование gsl в проектах
Добрый день, есть у кого уже лайф-хаки по использованию стандартной...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru