Совместное использование модели несколькими файлами EDMX (Entity Framework 4.0) - PullRequest
5 голосов
/ 07 февраля 2012

Я ищу решение проблемы, с которой, наверное, сталкиваюсь многие.

В настоящее время я работаю над приложением, содержащим около 400 таблиц. Приложение состоит из семи проектов библиотеки классов (StudentInfo, library, Fees и т. Д.), Каждый из которых имеет свой собственный файл .edmx (состоящий из 50 таблиц) со стратегией генерации кода = default And один проект веб-приложения, который ссылается на проекты библиотеки классов.
Существует около 15 общих таблиц, которые будут присутствовать в файле .edmx в каждом проекте библиотеки классов. Пространство имен классов / моделей одинаково (Campus) во всех файлах .edmx.

Я создал частичный класс, а именно School (который является одной из таблиц / моделей commom), который содержит некоторые методы.

Однако выдается следующая ошибка времени компиляции. Тип 'Campus.School' существует в файлах 'D: \ Project \ Campus \ CampusStudent \' и 'D: \ Project \ Campus \ CampusLibrary \ bin \ Debug \ CampusLibrary.dll'

.

Решения, предложенные другими участниками
1) Иметь отдельные пространства имен для каждого из файлов .edmx.
2) Используйте разные имена для моделей, а именно StudentSchool, LibrarySchool и т. Д.
Оба решения заставят меня дублировать общие классы с их методами в каждом проекте библиотеки классов. Кто-нибудь может мне помочь?

1 Ответ

6 голосов
/ 07 февраля 2012

Может быть способ, если вы используете шаблон POCO T4 для генерации текущего объекта.POCO в EF может быть любым классом в любом пространстве имен, которое имеет то же имя, что и объект в вашем EDMX, и которое имеет все свойства с тем же именем, что и объект в EDMX (включая те же типы и возможности доступа для методов получения и установки).

Определите ваши 15 общих классов в другой сборке (вы должны следовать упомянутым правилам POCO) и ссылаться на них во всех проектах библиотеки.Когда у вас есть эта сборка, создайте свою собственную версию шаблона POCO T4, которая не будет создавать новые файлы классов для этих общих сущностей, а вместо этого использовать классы из ссылочной сборки.

Другой вариант - создание и обслуживание всех этих 400 вручную.классы и типы контекста EF.Это то, что вы будете делать, если будете использовать только сопоставление кода (иначе сначала код) и у вас не возникнет этих проблем.

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