Итак, я читаю эту книгу DDD и в то же время разрабатываю новую систему. В книге DDD у них есть пример, где у объекта есть частные члены, такие как идентификатор и другие значения.Как создать код EF5 для первых объектов с защищенными/частными членами. Стиль DDD
Позволяет сказать, что у нас есть пользовательский объект, и у него есть идентификатор и набор курсов, на которые он имеет право присутствовать.
Тогда в стиле DDD они используют что-то вроде GrantRightTo (курс c), если мы говорим об объекте пользователя. И все это хорошо и хорошо, потому что в функции теперь я могу проверить любые бизнес-правила, например, если пользователь зарегистрирован на слишком много курсов. Умная!
Альтернативой является то, что у кого-либо есть разрешение на сбор курсов, но затем контроллеры должны знать бизнес-правила, что не очень хорошо.
Теперь вот проблема с кодом EF, я не могу получить свою коллекцию курсов, чтобы быть конфиденциальной/защищенной, как моя книга делает это и все еще сохраняется (dbcontext) Итак, что делать?
Я мог бы, конечно, открыть коллекцию и по-прежнему иметь такой метод, как GrantRightTo, но тогда другие разработчики могут сделать это неправильно, поэтому не идеальны.
Что делать?
Благодарим вас за ответ. Это звучит немного раздражающе, чтобы добавить еще один слой, который нужно поддерживать. Это рекомендуемый путь, или я должен просто взглянуть на другой дизайн? –
Это зависит от вашего приложения. Это один из способов, но, как я уже сказал, есть преимущества и недостатки. Вы должны действительно посмотреть на свое конкретное приложение и посмотреть, что лучше для вашей ситуации. К сожалению, здесь нет серебряной пули – Kenneth
Как насчет этого решения: http://blog.oneunicorn.com/2012/03/26/code-first-data-annotations-on-non-public-properties/ Правда есть какой-то код в объекте, который хранит его, но он все еще теоретически сохраняет агностик. и устранит необходимость в дополнительном слое. –