Я сделал ошибку, отправив вопрос без создания OpenId, поэтому мне кажется, что мне придется комментировать здесь (?).
Прежде всего, спасибо, что нашли время ответить - это, безусловно, больше связано с тем, как представлены данные, чем с тем, как работает модель. Однако я чувствую необходимость прояснить несколько вещей.
На модель / сущность домена никогда не ссылаются напрямую из пользовательского интерфейса. Я использую вариант шаблона DM-V-VM для разделения UI / бизнес-модели. Для отложенной загрузки и реализации репозитория в целом у меня есть реализации сущностей на уровне инфраструктуры, где обрабатываются такие вещи, как сериализация, грязное отслеживание и отложенная загрузка.
Таким образом, у слоя домена есть такие объекты, как:
class Entity {
virtual string SocialSecurityNumber { get; }
}
А уровень инфраструктуры добавляет некоторые другие функциональные возможности для обновления и восстановления объектов с сервера:
class EntityImpl : Entity {
bool isDirty;
bool isLoaded;
// Provide the means to set value on deserialization
override string SocialSecurityNumber;
}
Таким образом, режим отложенной загрузки будет реализован на уровне инфраструктуры и никогда не будет виден на уровне домена.
Я согласен, что использование геттеров было бы нехорошо, но я обеспокоен тем, как модель анонимного представления будет извлекать данные. На данный момент, чтобы получить список сущностей, модель представления будет содержать ссылку на хранилище домена, если у меня будет два хранилища, одно для аутентифицированных (и, следовательно, раскрытых) сущностей, и другое для неаутентифицированных пользователей - возможно, даже двух разных сущностей