1
我有一個屬性,它被暴露,因爲這我的域對象上:我如何確保NHibernate創建一個IList代理?
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
返回類型不是我正在查找的答案:-))