Как я могу узнать в классе, что метод или конструктор вызывается Entity Framework? - PullRequest
0 голосов
/ 28 ноября 2011

У меня есть код без конструктора без параметров. Дело в том, что если я хочу использовать модель в Entity Framework, я должен добавить конструктор без параметров, который при использовании в моем коде может привести к несоответствиям. Кроме того, я сохраняю свойства общедоступными (которые я действительно хочу оставить закрытыми), чтобы структура сущностей могла их заполнять.

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

Ответы [ 2 ]

2 голосов
/ 28 ноября 2011

Обычно не рекомендуется использовать классы с параметризованными конструкторами в качестве моделей данных.Если вы указываете какие-то входные данные для создания объекта, то это говорит о том, что класс используется больше как сервис, чем представление объекта, сохраняемое в вашей базе данных.Это особенно верно при использовании ORM, поскольку вы по сути пытаетесь заставить универсальную технологию отображения (EF) иметь некоторые знания об использовании ваших моделей, а не только их свойства данных.

Один из распространенных методовДля решения этого типа проблемы является использование объектов передачи данных (DTO).После того, как вы получили более базовый объект из базы данных, вы можете использовать его для гидратации более сложного объекта (параметризованные конструкторы и все), который используется остальной частью вашего приложения.Такое разделение интересов также помогает проверке и постоянному невежеству.

0 голосов
/ 28 ноября 2011

У нас та же проблема с конструкторами без параметров для WCF и других платформ сериализации.

Мы решили, что мы решили добавить атрибут устаревшего к конструктору без параметров с объяснением того, почемуиспользоваться.Затем, если он используется в коде, он будет отображаться как предупреждение, которое может привести к неудачной сборке (мы не беспокоимся об этом шаге; предупреждения достаточно).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...