关于NHibernate中关系表的操作
?
Nhibernate中的inverse屬性負責維護關系表。
?
數據關系圖
?
單方維護關系表
?
??????? /// <summary>
??????? /// 1)創建User
??????? /// 2)建立Group并將User添加到Group.Users中
??????? /// 3)創建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);執行時自動往關系表UserGroup中插入關系數據,則:
GroupMode.hbm.xml中的inverse屬性應該設置為false
UserMode.hbm.xml中的inverse屬性應該設置為true
如下圖所示:
????????
???????? inverse 屬性為 false 表示我來維護關系表。
???????? inverse 屬性為 true ?表示對方維護關系表。
?
?
?
?
??????? /// <summary>
??????? /// 1)創建Group
??????? /// 2)建立User并將Group添加到User.Groups中
??????? /// 3)創建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);執行時自動往關系表UserGroup中插入關系數據,則:
UserMode.hbm.xml中的inverse屬性應該設置為false
GroupMode.hbm.xml中的inverse屬性應該設置為true
?
雙方都維護關系表
將雙方的inverse屬性都設置為false
?
最后
inverse屬性的默認值為false
?
?
?
?
?
?
?/Files/xyjblog/NHibernate/關于NHibernate中關系表的操作.doc
?
?
轉載于:https://www.cnblogs.com/xyjblog/archive/2010/05/29/1747152.html
總結
以上是生活随笔為你收集整理的关于NHibernate中关系表的操作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 会计——会计核算前提、内容及方法
- 下一篇: frame隐藏显示