博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
NHibernate初学六之关联多对多关系
阅读量:4580 次
发布时间:2019-06-09

本文共 3017 字,大约阅读时间需要 10 分钟。

1:创建三张表T_Course、T_Student、T_Middle;其中一个学生可以对应多个课程,一个课程也可以对应多个学生,用T_Middle存放它们的关系内容;

CREATE TABLE [dbo].[T_Course](    [ID] [int] IDENTITY(1,1) NOT NULL,    [CourseName] [varchar](50) COLLATE Chinese_PRC_CI_AS NULL, CONSTRAINT [PK_T_Course] PRIMARY KEY CLUSTERED (    [ID] ASC)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]) ON [PRIMARY]CREATE TABLE [dbo].[T_Student](    [ID] [int] IDENTITY(1,1) NOT NULL,    [Name] [varchar](50) COLLATE Chinese_PRC_CI_AS NULL,    [StudentNum] [varchar](50) COLLATE Chinese_PRC_CI_AS NULL, CONSTRAINT [PK_T_Student] PRIMARY KEY CLUSTERED (    [ID] ASC)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]) ON [PRIMARY]CREATE TABLE [dbo].[T_Middle](    [ID] [int] IDENTITY(1,1) NOT NULL,    [StudentID] [int] NULL,    [CourseID] [int] NULL, CONSTRAINT [PK_T_Middle] PRIMARY KEY CLUSTERED (    [ID] ASC)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]) ON [PRIMARY]

2:实体的代码,其中两个类中都有IList,中间关系类就不用创建的:

public class CourseModel    {        public virtual int Id { get; set; }        public virtual string Coursename { get; set; }        public virtual IList Students { get; set; }    }    public class StudentModel    {        public virtual int Id { get; set; }        public virtual string Name { get; set; }        public virtual string Studentnum { get; set; }        public virtual IList Courses { get; set; }    }

3:XML映射文件的内容

3.1 CourseModel.hbm.xml文件的内容:

3.2 StudentModel.hbm.xml文件的内容:

注意:inverse:意思是反转,它指明类之间的关系由谁来进行维护。例如:班级(Class类)与学生(Student),班级-学生就是one-to-many,学生-班级就是many-to-one。它只能在 one-to-many中many的一方进行设置(当然,在many一方,可能是在<set>也可能是在<bag>也可能是在<array>中进行设置),而对于one方,是不进行Inverse设置的。在NHibernate 社区,inverse默认值为false。

4: 主要代码如下

protected void Button1_Click(object sender, EventArgs e)        {            CourseModel coursemodel = new CourseModel();            StudentModel studentModel = new StudentModel();            coursemodel.Coursename = "软件工程";            int CID = CourseBll.NewAdd(coursemodel);                        studentModel.Name = "踏浪帅";            studentModel.Studentnum = "20098991";            studentModel.Courses = new List
(); studentModel.Courses.Add(coursemodel); StudentBll.NewAdd(studentModel); } protected void Button2_Click(object sender, EventArgs e) { CourseModel coursemodel = new CourseModel(); coursemodel.Coursename = "软件工程"; CourseBll.Add(coursemodel); } protected void Button3_Click(object sender, EventArgs e) { StudentModel model = StudentBll.findById(1); StudentBll.Remove(model); }

 

感谢您的阅读,坚持每天进步一点点,离成功就更新一步;希望文章对您有所帮助;

转载于:https://www.cnblogs.com/wujy/p/3602300.html

你可能感兴趣的文章