当前位置: 首页 > 图文教程 > 网络编程 > ASP.NET > many-to-many多对多映射

ASP.NET
析构函数的作用 什么是析构函数
asp.net下Request.QueryString取不到值的解决方法
设置DropDownList的当前选项
生成多字段排序分页的SQL的通用类
注册表中存储数据库链接字符串的方法
asp.net下百度的编码和解码
asp.net 操作excel的实现代码
用ASP.NET做的个性化的邮件发送系统
DotNet2.0 生成网站的测试
ASP.net 验证码实现代码(C#)
C#中string与byte[]的转换帮助类-.NET教程,C#语言
把jQuery的each(callback)方法移植到c#中
asp.net对URL含有中文参数的转换
C#语言初级入门介绍
C#编码好习惯小结
C#声明方法实例说明
C#使用正则表达式实例
C#列出局域网中可用SQL Server服务器(续)
将DataRow转成指定类型的类,并返回这个类的对象(带值)
asp.net OleDbCommand 的用法

ASP.NET 中的 many-to-many多对多映射


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-03   浏览: 74 ::
收藏到网摘: n/a


多对多关系在数据库也是比较常见的,它通过一个中间表将两个主表关联起来。下面来看看多对多关联在nhibernate的实现,示例是一个用户和组之间的多对多关联。先来看看用户类的映射信息:
在多对多定义中,定义了中间表为UserGroups,此表只有两个字段:user_id和group_id;用于关联Users和Groups表。用户类的定义: 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这里用一个数据字典IDictionary对角来保存组对象。再来看看组类的映射信息:

这里many-to-many的定义和用户类映射信息中的差不多。组类的定义: 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 userId; private string name; private IDictionary groups = new Hashtable();} //class User注意:多对多没有主次之分,保存时的两边都要save。下面给出部分测试代码。 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(); }}以上测试代码中session的相关操作请查看相关文档。