Форум программистов, компьютерный форум, киберфорум
Наши страницы

C# и базы данных, ADO.NET

Войти
Регистрация
Восстановить пароль
 
Alex_trader
3 / 3 / 1
Регистрация: 11.11.2015
Сообщений: 413
#1

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

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

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

Слои приложения, использование одного из другого - C#
Здравствуйте. В литературе принципы хорошо описаны: делайте слабую связь между слоями благодаря интерфейсам, вот конкретики нет. ...

Пересечение двух объектов одного массива - C#
Вопрос собственно в заголовке темы. foreach(Block block in blocks) { block.BlockFunc(); ...

Использование одновременно двух звуков - C#
Не могли бы вы попонятнее объяснить как можно использовать одновременно две звуковые дорожки? Это я к тому, что если попытаться поверх...

Serialport, совместное использование из двух форм - C#
Начал изучать шарп прямо с практики, многое дается легко (есть опыт ооп). Но тут я реально запарился искать ответ на данную проблему. Итак,...

Метод с выбором одного из двух без условных операторов - C#
Суть такова, на одном из собеседований была предложена задача: Есть метод с булевым параметром. В зависимости от значения параметра...

.NET 4.x Использование двух или более каскадов Хаара - C#
Доброго времени суток! Пишу детектор знаков ограничения скорости(в компьютерном зрении новичек), реализация фильтра и поиска координат...

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

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

Добавлено через 6 минут
kolorotur, в данный момент дабы решить задачу, хочу добавить ссылку на проект и использовать контекст БД из первого проекта, подскажите как это правильно сделать? Ссылку на проект сделал, как теперь в контроллере нового проекта получить контекст из первого?
0
kolorotur
Эксперт .NET
9102 / 7605 / 1208
Регистрация: 17.09.2011
Сообщений: 13,131
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
9102 / 7605 / 1208
Регистрация: 17.09.2011
Сообщений: 13,131
20.08.2017, 13:34 #6
Цитата Сообщение от Alex_trader Посмотреть сообщение
в данный момент дабы решить задачу, хочу добавить ссылку на проект и использовать контекст БД из первого проекта
Не стоит этого делать — тот еще омут.
Через пару дней вам потребуется добавить ссылку на второй проект в первый проект и все — приплыли, циклическая зависимость.

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

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

Добавлено через 2 минуты
Так же в первом проекте имеется куча DTO классов - для них делается отдельная библиотека или все в одну новую сложить?
0
kolorotur
Эксперт .NET
9102 / 7605 / 1208
Регистрация: 17.09.2011
Сообщений: 13,131
20.08.2017, 14:11 #8
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от Alex_trader Посмотреть сообщение
как потом сюда существующую БД перенести?
Выделяете все нужные файлы в обозревателе решения и перетаскиваете их в новый проект.
Потом удаляете эти файлы в старом проекте.
В новом проекте подцепляете все необходимые зависимости: EntityFramework и иже с ним.
В старом проекте добавляете ссылку на новый проект.
Где надо изменяете юзинги на новое пространство с базой.

Цитата Сообщение от Alex_trader Посмотреть сообщение
в первом проекте имеется куча DTO классов - для них делается отдельная библиотека или все в одну новую сложить?
Я за новую библиотеку — тогда их можно будет использовать в новых проектах и не тянуть зависимость к EF.
1
Alex_trader
3 / 3 / 1
Регистрация: 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
Привет! Вот еще темы с ответами:

Использование двух массивов в одном цикле foreach - C#
Уважаемые форумчане! Пожалуйста, подскажите. Можно ли использовать два массива разного типа, т.е. две переменные по каждой из массива...

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

Использование окна в двух проектах - C# WPF
Здравствуйте! Как можно использовать окно в двух проектах в пределах одного решения? Например окно авторизации? Спасибо заранее

Использование одного метода в двух активити - Программирование Android
Добрый день. Подскажите такой вопрос: как можно использовать один метод для двух разных активити (android studio). Т.е. если я его опишу в...


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

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

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