Я заинтересован в использовании сущности framework - сначала переносится код с новой базой данных, и у меня есть некоторые вопросы/проблемы с дублированием кода POCO в информационных и бизнес-слоях.Дублирование кода POCO в разных слоях с первыми миграциями кода
Идея состоит в том, чтобы иметь уровень доступа к данным, содержащий мои объекты POCO, все декорированные элементами типа схемы базы данных, такими как длины строк, связанные с внешним ключом вещи, которые не работают из коробки, и все остальное. Этот уровень также будет действовать как репозиторий, который будет возвращать скалярные значения, сущности, агрегаты и IEnumerables.
Над этим будет бизнес-уровень, который будет обрабатывать разговоры с репозиторием и кучу бизнес-логики.
В верхней части находится слой презентации. Этот слой говорит о бизнес-слое и не имеет представления о слое данных - все, что он понимает, - это модели просмотра. Я бы использовал шаблон MVC на этом уровне, используя только модели просмотра.
Проблема, с которой я сталкиваюсь, связана с тем, где я должен делать сопоставление между моделями просмотра и моделями данных. Если я определяю модели представления в своем слое представления, бизнес-уровень не будет знать, что они существуют.
- Мне лучше определить модели представления в бизнес-слое или мне нужен набор моделей доменов в бизнес-слое, о котором будет знать слой презентации и с которым можно выполнить сопоставление?
- Может ли дополнительный набор моделей доменов быть вопиющим дублированием моделей, определенных в слое данных?
Модели должны были бы жить где-то, с которыми могут ссылаться как клиент, так и бизнес-уровень. Таким образом, они действуют как контракт данных между двумя слоями. Вы можете позволить бизнес-слою взаимодействовать с DAL, как вы считаете нужным, и всегда возвращать согласованный контракт данных обратно клиенту. Это будет означать, что ваши модели находятся в отдельном проекте, чем ваши взгляды и контроллеры. – SteveR
Я думал об этом - Казалось бы странным иметь пустую папку модели в моем проекте MVC, но, возможно, это просто то, что мне нужно будет преодолеть. Я надеюсь узнать о других вариантах, о которых я понятия не имею :) – MavisBeacon
Вы уверены, что бизнес-логика должна ссылаться на модели просмотра? –