Как разделить классы между несколькими базами данных в Entity Framework? - PullRequest
0 голосов
/ 29 апреля 2020

У нас есть два разных приложения (проект 1, проект 2), которые будут использовать две разные базы данных для разных целей, но есть несколько таблиц / классов из DB1, которые было бы целесообразно использовать для DB2. Мы используем Code Entity Framework для создания обеих баз данных. Текущий подход состоит в том, чтобы просто иметь схожие классы в DB2, и чтобы проект 1 выполнил перевод из объектов DB1 в объекты DB2, прежде чем предоставлять данные для проекта 2. Мне интересно, могу ли я внести изменения в проект, чтобы исключить перевод и повторение классы, и просто оба проекта используют общие классы.

Мне интересно, есть ли способ поместить 3 или 4 класса, которые мы хотим разделить между проектами, в некоторую библиотеку, на которую можно ссылаться в оба проекта и включены в их БД?

Текущий дизайн выглядит так:

DB1 project:  
User   
Task  
many different tables  

DB2 project:  
User   
Task  
many different tables 

Пока я представляю что-то вроде этого:

Class Library project:  
User  
Task

DB1 project:  
Reference to Class Library      
many different tables  

DB2 project:  
Reference to Class Library  
many different tables 

Есть ли способ заставить это работать с двумя базами данных Entity Framework?

1 Ответ

0 голосов
/ 29 апреля 2020

EF требуется только один DbContext на проект C #, это относится к миграции и т. Д. c. В вашем приложении может быть несколько проектов.

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

Но вы также упоминаете «другое приложение», это еще один сценарий, например, наличие внешнего и внутреннего приложения та же база данных? Они могут использовать одни и те же C# проекты с классами Entity. (Но это не несколько БД в одном приложении, это несколько приложений на одну БД).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...