日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

NHibernate实例化类部分属性

發布時間:2023/12/2 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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实例化类部分属性的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。