Я пытаюсь использовать общую модель, на которую ссылаются несколько программ, и не уверен, как правильно спроектировать ее для повторного использования. Не всем программам понадобятся все части модели, но id предпочитает не иметь разные версии этой версии с точки зрения контроля версий.
Я создал (упрощенную) модель в EF6, которая включает следующее:
Locations
Materials
Formulas
Моя бизнес-логика может добавлять материалы в формулы или местоположения:
AddMaterialToLocation(Material material)
AddMaterialToFormula(Material material)
Ссылочной программе нужно все вышеперечисленное. У него есть система формулировок и склад, поэтому он хочет использовать обе вышеуказанные функции.
Ссылочная программа два, однако, имеет только склад, ей не нужны формулы. Модель, на которую ссылаются, однако все еще делает. (Программа два находится в другой базе данных / ПК в целом)
Конечно, любые изменения в материале или складировании должны применяться как обновление к общей модели, обновляя обе программы.
Я смотрел на это следующим образом: -
- Чтобы все модели были объединены в единое целое, но во второй программе не нужно называть детали, которые им не нужны.
- Разделить модель на две части. У одной половины есть две таблицы / классы сущностей (Местоположения / Материалы), а у другой - (Формулы / Материалы). Это позволяет программе 2 создавать только ту часть модели, которая ей нужна.
- Разделите модель на три части, по одной на таблицу / класс. Каждая программа собирала части по отдельности и передавала / преобразовывала между ними, используя только основные типы?
AddMaterialToLocation(int MaterialCode, string MaterialName)
Приложения-ссылки в любом случае будут создавать свои собственные модели представлений в презентаторе, так что присоединение меньших частей друг к другу после того, как все будет хорошо.
Вышеуказанные решения имеют следующие недостатки: -
Вариант 1 - приведет к созданию множества неиспользуемых объектов для второй программы.
Вариант 2 - будет иметь два одинаковых Entite Material (которые также будут одной и той же таблицей БД)
Вариант 3 - будет много edmx. Ничто не будет связано - например, свободные свойства навигации и т. Д.
Есть ли лучший способ?