[NHibernate] NotFound.Ignore

產品會使用NHibernate 的Lazy Loading來找尋關聯資料,

但如果沒有資料的時候就會拋出 NHibernate.ObjectNotFoundException

是因為NHibernate 底層預設是找不到資料時會 throw Excetion 出來,這會讓我們在操作上有很大的困擾,

如下圖:


 

因為無法正常判斷他是否有資料,一使用 Lazy Loading 就拋出Exception ,用Try Catch 又不夠直覺,

後來發現有更簡單的方式,只要我們在Map 上設定 NotFound.Ignore() ,

            References<yyyyExtend>(x => x.yyyyExtend)
                .Cascade.None()
                .LazyLoad()
                .Columns("Key1", "Key2")
                .Nullable()
                .ReadOnly()
                //找不到就 Return null
                .NotFound.Ignore();

設定這個屬性,當Lazy Loading 找不到資料時,就會回傳 Null,這樣我們就可以更容易地操作 Entity 物件。