我的NHibernate之路(3)---表间多对多配置篇

本节要点:

1、如何配置表之间多对多的关系

2、多表之间如何进行操作

对于关系型数据库,表之间也多对多的关系也很常见的。在我们实际开发过 程中如何进行正确的映射的配置,以及所关联的表之间是如何操作的?这是本文 讲述的重点。

开发环境:VS2008 SP1  使用的NHibernate版本:NHibernate-2.1.2.GA- bin。

将上节讨论的学生表与班级表再进行深层次的引入:如果构建一个学生选课 的数据库,还需要什么表?表之间的关系如何对应?还是通过LINQ的截图说说表 的字段以及表之间的关系【不讨论LINQ与Nhibernate之间的关系,免得又有朋友 误解】。图如下:

通过图,可以很清楚的看出四张表见的关系。不过我主要说的是下面三张表 。

对于学生来说,他可以选择多门课程。对于课程来说,多个学生也可以选择 同一门课程。对于学生实体类和课程实体类,他们之间就是一种多对多的关系。 顺便给出下面三张表之间的外键。students表与SelectCourse:引用列【ID】与 被引用列【Students】,外键名:FK_SelectCourse_Students。Course表与 SelectCourse表:引用列【ID】与被引用列【CourseID】,外键名: FK_SelectCourse_Course。被引用类那么他们之间的映射关系如何?

通过上节的说明,一对多是在映射文件中通过one-to-many表示的。大家很自 然想到多对多就是通过many-to-many来表示。有了一对多配置的基础,我就说说 其中重要的。

时间: 2024-12-31 09:24:24

我的NHibernate之路(3)---表间多对多配置篇的相关文章

一起谈.NET技术,维护LINQ to SQL多对多表间关系

在项目开发中,经常会碰到维护多对多(many to many)关系表间关系的操作,例如为人员配置角色.为人员配置部门.为产品配置类别等.如果没有经过程序设计而直接进行开发,将会过多地关注其细节问题,如:应删除那些数据.应添加哪些数据.应保留哪些数据等,导致开发效率降低. 名词解释 在本文开始之前,首先以用户-用户角色-角色表为例,声明三个概念: l  主表:如果为用户配置角色,那么用户就是主表:如果为角色配置用户,那么角色就是主表. l  从表:如果为用户配置角色,那么角色就是从表. l  关系

我的NHibernate之路(1)---基本配置篇

对初学者来说,学习NHibernate第一个障碍便是他的配置.确实,相对于 LINQ TO SQL或者是Entity FrameWork来说,他的配置太复杂了,各个实体类对 应的映射文件.以及NHibernate自身的配置等等,对象刚学习NHibernate的新手 来说,确实是摆在他们面前的一道坎.那么NHibernate的配置到底应该注意哪些 问题?又该如何去进行配置呢?俗话说"给人鱼不如授人以渔".下面我就说说 自己在使用NHibernate配置的过程,以及在配置中出现问题后,怎样

搭建你的Spring.Net+Nhibernate+Asp.Net Mvc 框架 (四)配置全攻略

     本篇目的:配置Spring.Net和Nhibernate.配置Spring.Net来注入Nhibernate需要的SessionFactory,配置业务逻辑层所需要的Dao层属性的支持.配置这套框架与web程序关联.      在上一篇我们已经将三层基本搭建起来了.这篇中我们将要讲述怎样通过配置,将三层通过IOC注入.现在我们开始我们的旅程: 第一步:配置实体类[Model]对应的数据库映射文件.Nhibernate中要求映射文件必须按照约定的文件命名格式进行命名.至于放到什么项目中都

hibernate-Hibernate 三张表关联 一对多对多 配置

问题描述 Hibernate 三张表关联 一对多对多 配置 当更新classA时,关联多方(classB)能自动更新,单与classB 关联的多方(Class C)却不能自动更新 classC: classB: classA: classA对应的A表主键是B表的外键,ClassB对应的B表主键是C标的外键.现在情况是saveorupdate()A表的时候,B表能自动更新. classA 对应A表 classB :b表 classC: c表 A表的主键Aid 是b表的外键, b表的bid是c表的外

使用属性表:VS2013上配置OpenCV

以前,windows下配置OpenCV一直不太方便:总是要手动添加lib,添加include,还要配置PATH使得程序运行时候能找到dll文件. 每次新建一个使用OpenCV的工程都要手动添加,很麻烦:而且,有时候需要不同版本的OpenCV测试.如果从32位模式切换到64位模式,又需要替换一次配置..一旦有一个配错了,就总是徘徊在各种配置项的检查上. 后来,看到了freedomshe用属性表进行配置,其提供的属性表文件确实方便,但是还是需要手动配置OpenCV环境变量.追加OpenCV中的bin

我的NHibernate之路(2)---主从表(一对多)配置篇

通过我上篇文章的配置,单独做一张表的操作已经够了.但是在我们实际开 发的过程中,很多时候数据库中都存在着主从表等关系,这时候就存在主表中的 一条记录可能对应多条从表中的记录.那么这种情况下,我们还用上篇文章的的 简单配置就不够了.下面我通过一个实际的例子说说Nhibernate中主从表的配置 . 先介绍开发环境和软件版本:VS2008 SP1.NHibernate-2.1.2.GA-bin.在下 面的例子中,就两张表,一张Class表,一张Student表.这就是一个典型的主从 表的关系. 这种

没有自主主键的表间关联关系如何处理

问题描述 我有两张表,一张:用户基本信息表一张:用户详细信息表表间是一对多的关系(one-to-many关系),即一个用户基本信息表可以对应到多个详细信息,那么在这种情况下,用hibernate反转工程如何进行处理.生成的表结构总是不对.--------------------------------------------------用户基本信息表createtablecustomerInfo(customerIdintidentityprimarykey,customerNamevarcha

两表间拷贝数据

数据 两张表是一样的,只是新老数据更新update dbo.classmatesset LoginTimes = (select LoginTimes from dbo.classmates2 where classmates.id = classmates2.id )

Sybase ASE出现表间循环依赖不能删除的问题

写了一个简单的脚本来清除一个用户所拥有的表以及存储过程.感兴趣的可以试一下.我是初次写ASE下边的存储过程,肯定有更好的解决方法.本想直接在存储过程里drop东西,可惜失败了.这个存储过程只是生成了清除表的sql脚本.拷贝再执行即可. 具体示例如下: create procedure cleardb(@username varchar(32) in) as begin declare @strdrop varchar(512) select @strdrop='' set @strdrop='s