Entity Framework - абстрактный базовый класс без сопоставления с таблицей БД

I есть ситуация, когда у меня есть 4-5 очень похожих классов, которые я хотел бы повторно использовать для использования абстрактного базового класса. Идея, лежащая в основе этого, заключалась бы в разрешающих методах, которые могут быть используется каждым классом при соблюдении принципов DRY.

Моя проблема заключается в том, что эти классы являются классами Entity, созданными из EF4, и каждый раз, когда я пытаюсь изменить свою модель, кажется, что она выходит из строя.

Какой самый лучший / рекомендуемый метод для добавления базового класса в мою модель EF и наследования существующих классов в модели от него в качестве базового? На данный момент у меня нет проблем с добавлением базового класса, присвоением ему свойства ID, как кажется, и затем созданием наследования, но EF затем стонет о

'Ошибка 3024: Проблема с отображением фрагментов, начинающихся со строки 18563: необходимо указать сопоставление для всех ключевых свойств (MyBaseType.ID) EntitySet MyBaseType. '

В этой ситуации я не хочу, чтобы базовый тип сохранялся в БД, поскольку использовался исключительно в качестве контейнера для общих базовых методов. ко всем классам, которые от него наследуются. Такое чувство, что мне здесь не хватает чего-то простого, но я не могу этого увидеть.

Есть идеи, как таким образом добавить базовый класс? Или я должен просто добавить базовый класс в код и каким-то образом обойти модель?

РЕДАКТИРОВАТЬ: В качестве дополнительной информации рассмотрим пример, где есть, скажем, 3 типа: MortageApplicationForm, BankAccountApplicationForm и CreditCardApplication form. В настоящее время они хранятся в 3 разных таблицах с набором разных полей. Я пытаюсь создать базовый класс, скажем, "Форма", в котором будут общие поля.

На простом уровне предположим, что каждая таблица имеет поле идентификатора первичного ключа с именем «CreditCardFormID», «BankAccountFormID» и т. Д. Что я бы хотел сделать, это создать базовый класс «Form» со свойством «ID», который в случае одной таблицы будет отображаться «CreditCardFormID», а другой - «BankAccountFormID».

Я счастлив делать это сопоставление в частичных классах (поскольку я не хочу сохранять «ID» в БД). Я просто хочу использовать его в коде, поэтому я могу написать общие методы для таких вещей, как LoadForm ( int ID) без необходимости писать огромные переключатели для каждого типа сущности или определенные методы для каждого типа сущности.

13
задан dougajmcdonald 7 November 2011 в 17:15
поделиться