Я пытаюсь построить модель предметной области с помощью бизнес-методов, и у меня есть постоянство для EF 4.1. Пока все хорошо.
Проблема в том, что все свойства выставлены как открытые для классов моего домена. Во всяком случае, это то, что я узнал из этого урока. Это означает, что у меня нет убедительных доказательств того, что некоторые небрежные программисты не изменят свойства класса вне бизнес-методов. Инкапсуляция нарушена.
Я пытался представить ISomething, но TableAttribute применяется только к классам, а не к интерфейсам, поэтому я не могу сказать EF сделать DBSet. Если я оставлю TableAttribute классам, но заставлю Something реализовать ISomething в любом случае, тогда я не смогу выполнить DBSet.Add (), потому что EF не знает ISomething.
Единственный способ, о котором я могу думать, - это написать полный уровень абстракции поверх EF 4.1 для CRUD с использованием интерфейсов. Под капотом сделайте перевод типа между Something и ISomething. Звучало много сложности и зияющей дыры в дизайне EF. Или я, должно быть, что-то пропустил.
Как бы вы решили это?
Большое спасибо.