NHibernate实例化类部分属性
生活随笔
收集整理的這篇文章主要介紹了
NHibernate实例化类部分属性
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
NHibernate 為習慣SQL的開發者提供了接口,將查詢的結果轉變為持久化對象。雖然該方法不是很提倡。
GetCurrentSession().CreateSQLQuery(sql)參數sql就是實際要執行的sql語句。
如果需要將結果轉化為持久換對象,那需要提供對象類型。
GetCurrentSession().CreateSQLQuery.AddEntity()但需要注意的是,該類型必須是NHibernate可持久化的對象,也就是該類型必須寫在hbm.xml文件中。
同時,sql中必須提供類型中所必須的全部屬性,實例化全部屬性。假如,實體類中有3個屬性,但sql只提供了小于3的字段(屬性),會報錯。
class Item{ public int Id{get;set;} public string Name{get;set;} public DateTime Birthday{get;set;} }如果使用下面的sql會報錯。sql中提供了2個字段,但是實體類中有3個屬性。
GetCurrentSession().CreateSQLQuery("select Id,Name from Item").AddEntity(new Item().GetType())很多情況下,我們需要初始化部分屬性。如果將結果實例化,那需要重新設計一個可持久化的類。這樣可能會增加很多小類,非常不靈活。
幸運的是NHibernate為我們提供了另外一個方法List,將結果轉化為object[].
GetCurrentSession().CreateSQLQuery("select Id,Name from Item").List<object[]>() as List<object[]>;進一步將List<object[]>轉化為強類型。
List<object[]>.ConvertAll<Item>(new Converter<object[], Item>(delegate(object[] a) {
return new Item(){Id =Convert.ToInt32(a[0]),Name=a[1].ToString()}
}));
?
轉載于:https://www.cnblogs.com/lucika/p/4432209.html
總結
以上是生活随笔為你收集整理的NHibernate实例化类部分属性的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 中软国际 问题一php的优缺点
- 下一篇: 关于bolg