青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

We do not always find visible happiness in proportion to visible virtue

夢(mèng)幻白樺林

SHARE

  C++博客 :: 首頁(yè) :: 聯(lián)系 :: 聚合  :: 管理
  14 Posts :: 58 Stories :: 62 Comments :: 0 Trackbacks

公告

常用鏈接

留言簿(5)

搜索

  •  

最新隨筆

最新評(píng)論

閱讀排行榜

多對(duì)多關(guān)系在數(shù)據(jù)庫(kù)也是比較常見(jiàn)的,它通過(guò)一個(gè)中間表將兩個(gè)主表關(guān)聯(lián)起來(lái)。
下面來(lái)看看多對(duì)多關(guān)聯(lián)在nh的實(shí)現(xiàn),示例是一個(gè)User和Group之間的多對(duì)多關(guān)聯(lián)。

先來(lái)看看User類的映射信息:
many-to-many mapping 

在多對(duì)多定義中,定義了中間表為UserGroups,此表只有兩個(gè)字段:user_id和group_id;用于關(guān)聯(lián)Users和Groups表。

User的定義:

public class User {

   public User() {
   }

   public int UserId
   {
      get { return userId; }
      set { userId = value; }
   }

   public int Name
   {
      get { return name; }
      set { name = value; }
   }

   public IDictionary Groups
   {
      get { return groups; }
      set { groups = value; }
   }

   private int userId;
   private string name;
   private IDictionary groups = new Hashtable();

} //class User

這里用一個(gè)數(shù)據(jù)字典IDictionary對(duì)角來(lái)保存組對(duì)象。

再來(lái)看看Group類的映射信息:
many 

這里many-to-many的定義和User類映射信息中的差不多。

組類的定義:

public class Group {

   public Group() {
   }

   public int GroupId
   {
      get { return groupId; }
      set { groupId = value; }
   }

   public int Name
   {
      get { return name; }
      set { name = value; }
   }

   public int Description
   {
      get { return description; }
      set { description = value; }
   }

   public IDictionary Users
   {
      get { return users; }
      set { users = value; }
   }

   private int groupId;
   private string name;
   private IDictionary users = new Hashtable();

} //class Group

注意:多對(duì)多沒(méi)有主次之分,保存時(shí)的兩邊都要save!

下面給出部分測(cè)試代碼。

public TestCreate() {
   User user1 = new User();
   user1.Name = "test1";
   User user2 = new User();
   user2.Name = "test2";

   Group group1 = new Group();
   group1.Name = "group1"; 
   Group group2 = new Group();
   group2.Name = "group2";

   user1.Groups.Add( group2, group2 );
   user2.Groups.Add( group1. group1 );
   group1.Users.Add( user2, user2 );
   group2.Users.Add( user1, user1 );

   ITransactioin trans = null;
   try {
      trans = session.BeginTransaction();

      Session.Save( user1 );
      Session.Save( user2 );
      Session.Save( group1 );
      Session.Save( group2 );

      trans.Commit();
   }
   catch ( Exception e ) {
      if ( trans != null ) trans.Rollback();
      throw e;
   }
   finally {
      session.Close();
   }
}

以上測(cè)試代碼中session的相關(guān)操作請(qǐng)查看相關(guān)文檔。

在實(shí)際應(yīng)用中,我較少使用many-to-many映射,當(dāng)然這要從性能和實(shí)際需要考慮。
我的做法是一個(gè)elements來(lái)取得所有關(guān)聯(lián)的identity, 然后在需要的時(shí)候才加載對(duì)象,有點(diǎn)類似lazy, 但lazy有一個(gè)問(wèn)題,就是session必須沒(méi)有被釋放,這在分層開(kāi)發(fā)中較難辦到。

原文:http://www.seaskyer.net/Index/Catalog44/182.html

posted on 2007-09-19 11:31 colys 閱讀(564) 評(píng)論(0)  編輯 收藏 引用 所屬分類: C#.Net 、NHibernate

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            国产精品国产三级国产普通话99| 亚洲一品av免费观看| 午夜在线电影亚洲一区| 欧美v亚洲v综合ⅴ国产v| 亚洲欧美日韩天堂一区二区| 亚洲精品乱码久久久久久日本蜜臀 | 欧美在线观看网址综合| 欧美电影免费观看| 国产性做久久久久久| 国产一区二区av| 亚洲一区免费| 欧美一区二区三区四区高清| 久久不见久久见免费视频1| 久久综合久久综合久久综合| 欧美成人在线网站| 欧美视频一区二区三区在线观看| 国产精品久久二区二区| 国产在线播精品第三| 亚洲精品免费观看| 亚洲欧美网站| 欧美激情1区| 亚洲视频在线一区| 久久另类ts人妖一区二区| 蜜臀va亚洲va欧美va天堂| 夜夜嗨av一区二区三区中文字幕| 午夜精品久久久久久久99樱桃 | 久色成人在线| 欧美日韩国产综合一区二区| 国产欧美日韩| 99视频有精品| 久久久久女教师免费一区| 亚洲欧洲精品一区二区三区| 亚洲综合久久久久| 欧美激情中文不卡| 在线观看欧美日韩国产| 性高湖久久久久久久久| 亚洲福利视频一区二区| 欧美一区二区三区免费大片| 欧美国产免费| 亚洲国产小视频| 久久免费一区| 午夜老司机精品| 国产精品女主播在线观看| 亚洲精品日韩激情在线电影| 久久久久久综合网天天| 亚洲午夜一区二区| 欧美日韩中文另类| 日韩视频免费观看高清完整版| 久久婷婷丁香| 欧美在线影院| 国产酒店精品激情| 亚洲男同1069视频| 99亚洲一区二区| 欧美精品99| 噜噜爱69成人精品| 国产一区二区黄| 亚洲欧美日韩在线高清直播| av成人免费在线观看| 欧美国产1区2区| 亚洲国产乱码最新视频| 欧美大片免费观看| 免费亚洲电影在线观看| 亚洲高清一区二| 欧美成在线观看| 毛片av中文字幕一区二区| 亚洲高清三级视频| 欧美国产日韩二区| 欧美成人精品在线| 一道本一区二区| 亚洲精品影院| 欧美日韩亚洲一区二| 亚洲欧美国产另类| 小黄鸭精品aⅴ导航网站入口| 国产欧美一区二区色老头 | 亚洲精品在线一区二区| 欧美激情影院| 欧美日韩成人综合在线一区二区 | 久久精品日产第一区二区| 欧美一区2区三区4区公司二百 | 欧美激情一区二区三区在线| 一区二区久久| 亚洲一级网站| 在线观看91精品国产入口| 欧美成人蜜桃| 欧美日韩国产精品一卡| 欧美一级网站| 久久躁日日躁aaaaxxxx| 男人天堂欧美日韩| 一区二区久久久久| 亚洲欧美在线x视频| 一区二区三区在线视频观看| 亚洲国产日韩一区| 国产精品区一区| 免费日韩精品中文字幕视频在线| 欧美激情bt| 久久大逼视频| 欧美久久影院| 久久精品一级爱片| 欧美电影免费网站| 欧美一区二区三区四区夜夜大片| 久久午夜视频| 欧美一区二区三区在线免费观看| 久久午夜影视| 香蕉久久精品日日躁夜夜躁| 蜜桃伊人久久| 久久aⅴ国产欧美74aaa| 欧美精品一区二区高清在线观看| 欧美在线观看视频一区二区三区| 另类图片国产| 久久精品30| 国产精品超碰97尤物18| 欧美黄在线观看| 午夜精品视频在线观看| 欧美日韩免费观看一区| 欧美gay视频| 国产一区二区三区高清| 欧美一级视频| 欧美成人激情视频| 久久国产精品久久久久久久久久| 蜜桃久久精品乱码一区二区| 性欧美超级视频| 欧美激情一区二区久久久| 久久精品国产清高在天天线| 欧美日韩在线第一页| 亚洲国产精品va在线观看黑人| 国产精品一区二区三区成人| 亚洲国产日韩一级| 亚洲欧洲久久| 久久躁日日躁aaaaxxxx| 久久全国免费视频| 国产日韩精品一区二区| 久久天堂精品| 亚洲欧美日韩一区在线观看| 日韩视频在线你懂得| 美女主播精品视频一二三四| 免费日韩成人| 亚洲精品欧美精品| 欧美久久电影| 99在线精品观看| 亚洲性夜色噜噜噜7777| 欧美日韩一区在线视频| 在线天堂一区av电影| 欧美一区二区视频在线观看2020| 国产精品视频xxxx| 亚洲综合色噜噜狠狠| 午夜亚洲影视| 国产一区二区三区在线免费观看| 亚洲免费综合| 久久精品视频在线免费观看| 国产午夜精品视频免费不卡69堂| 午夜一区不卡| 暖暖成人免费视频| 亚洲精品影院| 欧美先锋影音| 亚洲国产经典视频| 欧美激情综合| 欧美专区在线| 久久久久久网站| 海角社区69精品视频| 久久国产日本精品| 亚洲第一久久影院| 一区二区三区三区在线| 国产精品美女久久久久av超清 | 国产一区二区毛片| 久久午夜色播影院免费高清| 亚洲国产日韩欧美| 亚洲欧美日韩中文视频| 国产欧美日韩一级| 美日韩在线观看| 亚洲天堂网在线观看| 久久精品一区二区三区四区| 亚洲欧美国产三级| 久久国产精品黑丝| 亚洲人久久久| 国产精品日韩一区| 久久嫩草精品久久久久| 91久久嫩草影院一区二区| 香蕉免费一区二区三区在线观看| 永久555www成人免费| 欧美美女bb生活片| 欧美一区二区视频网站| 亚洲国产精品久久久久秋霞影院 | 欧美日韩精品免费观看视频完整 | 欧美激情精品久久久久久免费印度 | 欧美久久久久久蜜桃| 欧美一区三区三区高中清蜜桃| 亚洲福利久久| 久久国产精品黑丝| 一本色道久久| 亚洲激情精品| 国产无一区二区| 欧美日韩三区四区| 欧美jizz19hd性欧美| 欧美亚洲一区二区在线观看| 一区二区三区视频观看| 最近中文字幕mv在线一区二区三区四区| 亚洲欧美国产高清va在线播| 日韩视频在线观看| 亚洲第一区中文99精品| 黑人操亚洲美女惩罚|