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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

关于NHibernate中关系表的操作

發(fā)布時間:2025/4/16 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 关于NHibernate中关系表的操作 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

?

Nhibernate中的inverse屬性負(fù)責(zé)維護關(guān)系表。

?

數(shù)據(jù)關(guān)系圖

?

單方維護關(guān)系表

?

??????? /// <summary>

??????? /// 1)創(chuàng)建User

??????? /// 2)建立Group并將User添加到Group.Users

??????? /// 3)創(chuàng)建Group

??????? /// </summary>

??????? private static void CreateGroupAndUser()

??????? {

??????????? string username = "User_" + Guid.NewGuid().ToString().Substring(0, 8);

??????????? string groupname = "Group_" + Guid.NewGuid().ToString().Substring(0, 8);

?

??????????? UserDAL userDAL = new UserDAL(SessionManager_NHibernateSample.GetSession());

??????????? UserModel user = new UserModel();

??????????? user.UserName = username;

??????????? int userId = userDAL.CreateUser(user);

?

??????????? GroupModel group = new GroupModel();

??????????? group.GroupName = groupname;

??????????? group.Users = new Iesi.Collections.Generic.HashedSet<UserModel>();

??????????? group.Users.Add(user);

?

??????????? GroupDAL groupDAL = new GroupDAL(SessionManager_NHibernateSample.GetSession());

??????????? int groupId = groupDAL.CreateGroup(group);

??????? }

?

???????? 上述代碼中,如果想讓group.Users.Add(user);執(zhí)行時自動往關(guān)系表UserGroup中插入關(guān)系數(shù)據(jù),則:

GroupMode.hbm.xml中的inverse屬性應(yīng)該設(shè)置為false

UserMode.hbm.xml中的inverse屬性應(yīng)該設(shè)置為true

如下圖所示:

????????

???????? inverse 屬性為 false 表示我來維護關(guān)系表。

???????? inverse 屬性為 true ?表示對方維護關(guān)系表。

?

?

?

?

??????? /// <summary>

??????? /// 1)創(chuàng)建Group

??????? /// 2)建立User并將Group添加到User.Groups

??????? /// 3)創(chuàng)建User

??????? /// </summary>

??????? private static void CreateUserAndGroup()

??????? {

??????????? string username = "User_" + Guid.NewGuid().ToString().Substring(0, 8);

??????????? string groupname = "Group_" + Guid.NewGuid().ToString().Substring(0, 8);

?

??????????? GroupModel group = new GroupModel();

??????????? group.GroupName = groupname;

??????????? GroupDAL groupDAL = new GroupDAL(SessionManager_NHibernateSample.GetSession());

??????????? int groupId = groupDAL.CreateGroup(group);

?

??????????? UserModel user = new UserModel();

??????????? user.UserName = username;

??????????? user.Groups = new Iesi.Collections.Generic.HashedSet<GroupModel>();

??????????? user.Groups.Add(group);

?

??????????? UserDAL userDAl = new UserDAL(SessionManager_NHibernateSample.GetSession());

??????????? int userId = userDAl.CreateUser(user);

??????? }

?

???????? 按照第一個代碼的說法,如果想讓user.Groups.Add(group);執(zhí)行時自動往關(guān)系表UserGroup中插入關(guān)系數(shù)據(jù),則:

UserMode.hbm.xml中的inverse屬性應(yīng)該設(shè)置為false

GroupMode.hbm.xml中的inverse屬性應(yīng)該設(shè)置為true

?

雙方都維護關(guān)系表

將雙方的inverse屬性都設(shè)置為false

?

最后

inverse屬性的默認(rèn)值為false

?

?

?

?

?

?

?/Files/xyjblog/NHibernate/關(guān)于NHibernate中關(guān)系表的操作.doc

?

?

轉(zhuǎn)載于:https://www.cnblogs.com/xyjblog/archive/2010/05/29/1747152.html

總結(jié)

以上是生活随笔為你收集整理的关于NHibernate中关系表的操作的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。