Я создаю рабочий процесс для некоторых форм, которые будут направляться пользователям на утверждение. У меня есть абстрактный класс «FormBase», в котором хранятся объекты LinkedList «Approver» и есть некоторые помощники, которые изменяют список утверждений, переносят форму на следующего человека и так далее. Эти помощники являются «виртуальными», поэтому данная форма может переопределять их с помощью пользовательского поведения.Entity framework - хранение различных типов
От этой «базы» появятся экземпляры различных форм, каждый из которых будет отличаться в данных, которые он содержит. Это будет обычный набор списков, строк и числовых значений, которые вы найдете в обычной форме. Поэтому у меня может возникнуть
class MaterialForm : FormBase
class CustomerForm : FormBase
и т. Д., А новый экземпляр создается, когда пользователь создает и отправляет форму.
Я хотел бы сохранить детали поля в EF6 (или 5) гибким способом, чтобы я мог создавать больше форм, происходящих из FormBase, без излишней вопли. В идеале я хотел бы, чтобы все поведение, характерное для этого типа формы, предназначалось для жизни в производном классе MaterialForm. Я полагаю, что я не могу перенести этот производный класс на EF (если я не ошибаюсь!). Я рассматриваю:
a) JSonifying детали поля и сохранение их как строки в классе, который хранится в EF. Я бы, вероятно, сделал то же самое для списка утверждений, и каждый раз, когда мне нужно изменить список, я бы вытащил их, изменил список и оттолкнул их.
b) Включая свойство «FormData» в моем абстрактном классе, затем включающее производную версию этого в каждой конкретной реализации (например, MaterialFormData, CustomerFormData). Однако абстрактному классу не понравилось мое использование производного типа таким образом. Также неясно, как настроить DbSets в этом случае, поскольку вам, вероятно, понадобится новая таблица для каждого типа.
Я чувствую, что не понимаю, что такое фундаментальные понятия о том, как «реальные» классы относятся к тем, которые хранятся в EF. Что бы вы рекомендовали в качестве архитектуры для этого случая?
Спасибо за ваши комментарии Ник. Хорошие ссылки. – Glinkot