关于NHibernate中关系表的操作
?
Nhibernate中的inverse屬性負(fù)責(zé)維護(hù)關(guān)系表。
?
數(shù)據(jù)關(guān)系圖
?
單方維護(hù)關(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í)行時(shí)自動(dòng)往關(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 表示我來(lái)維護(hù)關(guān)系表。
???????? inverse 屬性為 true ?表示對(duì)方維護(hù)關(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);
??????? }
?
???????? 按照第一個(gè)代碼的說(shuō)法,如果想讓user.Groups.Add(group);執(zhí)行時(shí)自動(dòng)往關(guān)系表UserGroup中插入關(guān)系數(shù)據(jù),則:
UserMode.hbm.xml中的inverse屬性應(yīng)該設(shè)置為false
GroupMode.hbm.xml中的inverse屬性應(yīng)該設(shè)置為true
?
雙方都維護(hù)關(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中关系表的操作的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 会计——会计核算前提、内容及方法
- 下一篇: frame隐藏显示