Подтвердить что ты не робот

Как поддерживать модели нескольких структур Entity Framework в одном решении

Я начал разработку приложения с использованием Entity Framework.

Я добавил пространство имен, чтобы содержать, например, весь мой код управления MyApp.Users, и это содержит модель, которая была помечена как внутренняя в пространство имен и только предоставляет функции остальной системе через интерфейсы. Это все хорошо.

Теперь я хочу определить другое пространство имен для обработки конкретной бизнес-логики. Я хочу, чтобы он содержал модель, которая знает только о другом подмножестве схемы базы данных, однако это подмножество перекрывается в таблице Users. Когда я пытаюсь получить доступ к второй модели в основном проекте, я получаю эту ошибку:

"EdmType не может быть сопоставлен классам CLR несколько раз"

Я чувствую, что это не должно вести себя таким образом. После того, как все таблицы пользователей ссылаются на две разные модели в двух разных пространствах имен... как VS даже знает, что таблица ссылается дважды?

Кто-нибудь видел эту проблему и, возможно, выяснил, как разрешить существование той же таблицы в разных моделях?

В качестве альтернативы - означает ли это какой-то вид Anti-Pattern Entity Framework, которого я должен избегать?

4b9b3361

Ответ 1

Чтобы повторно использовать типы в нескольких моделях, вам необходимо выполнить некоторые конкретные шаги, описанные в этом сообщении в блоге. Как и многие другие усовершенствованные функции Entity Framework, это работает, но не так хорошо работает с дизайнером GUI. См. Также этот вводный пост для получения дополнительных идей по работе с более крупными моделями.

Ответ 2

У вас может быть определенно несколько моделей, но они не могут пересекаться. Сообщение об ошибке довольно ясно - если они перекрывают друг друга, как бы EF знал, к какому типу CLR нужно сопоставить - нет способа сказать это, действительно.

В вашем случае вы могли бы попытаться извлечь таблицу Users в свою третью модель, если ее нужно использовать и в двух других местах.

Марк