У меня есть свойство в моем доменном объекте, которое отображается как:
public virtual IEnumerable<WorkPost> WorkPosts
{
get { return sheetPosts; }
private set
{
Guard.AssertAssignableFrom(value, typeof (IList<WorkPost>));
sheetPosts = value as IList<WorkPost>;
}
}
Внутренним представлением является IList<WorkPost>
, и, как вы можете видеть, назначенное значение (это ленивый загрузочный прокси-сервер из NHibernate) затем приводится к правильному типу. Эта реализация дала мне неприятный вкус, потому что это зависит от внутреннего представления прокси-серверов NHibernate. Чтобы убедиться, что NHibernate генерирует прокси как список, я создал свободное отображение для свойства с объявлением AsList()
:
HasMany(sheet => sheet.WorkPosts).KeyColumn("sheetId").AsList();
Но это дало мне немного больше, чем требовалось, потому что семантика списка подразумевает сортировку, которая снова добавляет некоторые дополнительные поля в модель базы данных, а также некоторые дополнительные запросы (из-за обновления поля сортировки при фиксации), так что выше " AsList "должен уйти.
Как я могу контролировать, какой тип интерфейсов должен возвращать NHibernate при генерации прокси? (примечание: изменение типа возврата IEnumerable
для свойства не является ответом, который я ищу: -))