摆弄【Nhibernate 协会制图--导乐陪伴分娩】
现有两个实体,Dog和
Master,映射到数据库表中如上图所看到的。一个Dog仅仅同意相应一个Master,但一个Master能够有多个Dog。我们在查询Dog的时候。往往还须要知道其主人Master的信息。也就是说。假设已知一个Dog的信息。想一次来顺藤摸瓜找到Master的信息,此时用Nhibernate怎样去实现呐?这里就用到了多对一的关联映射方法。
看我是怎样实现的:
Nhibernate的整个搭建过程就不在赘述了。前面的两篇文章都已经具体展示了一下,以下只展示多对一的实现方法。
首先构建实体类Dog和Master
Master
public class Master
{
private string id;
private string name; public Master()
{
} public virtual string Id
{
get { return id; }
set { id = value; }
} public virtual string Name
{
get { return name; }
set { name = value; }
Dog
public class Dog
{
private string id;
private string name;
private string sex;
private string weight;
private Master master; public Dog()
{
} public virtual string Id
{
get { return id; }
set { id = value; }
} public virtual string Name
{
get { return name; }
set { name = value; }
} public virtual string Sex
{
get { return sex; }
set { sex = value; }
} public virtual string Weight
{
get { return weight; }
set { weight = value; }
} public virtual Master Master //这里除了dog的基本属性外,还加入了Master类这个属性
{
get{ return master ; }
set { master=value ; }
}
继续构建.hbm.xml
Master
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
namespace="Model" assembly="Model"> <class name="Master" table="Master"> <id name="Id">
<column name="MasterId" sql-type="char(32)" />
<generator class="assigned" />
</id> <property name="Name">
<column name="Name" sql-type="nvarchar(16)" />
</property> </class>
</hibernate-mapping>
Dog
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
namespace="Model" assembly="Model"> <class name="Dog" table="Dog" lazy="true"> <id name="Id">
<column name="DogId" sql-type="char(32)" />
<generator class="assigned" />
</id> <property name="Name">
<column name="Name" sql-type="nvarchar(16)" />
</property> <property name="Sex" >
<column name="Sex" sql-type="nvarchar(16)" />
</property> <property name="Weight" >
<column name="Weight" sql-type="nvarchar(16)" />
</property> <many-to-one name="Master" column="MasterId" /> <!-- 这里多了这个标签,指明相应表中外键“MasterID”相应的是实体Master所相应表记录--> </class>
</hibernate-mapping>
client实现
<span style="font-family:FangSong_GB2312;font-size:14px;"><strong>插入记录</strong></span>
Master master = new Master();
master.Id = "masterid";
master.Name = txtMName.Text.ToString();
session.Save(master); Dog prince = new Dog();
prince.Id = "dogid";
prince.Name = txtDName .Text .ToString ();
prince.Sex = txtSex .Text .ToString();
prince.Weight = txtWeight .Text .ToString ();
prince.Master = master;
<span style="font-family:FangSong_GB2312;font-size:14px;"><strong>查询记录</strong></span>
Dog prince = new Dog();
prince = (Dog)session.Get ("Dog","dogid" ); txtinformation.Text = "赤丸的主人是:"+prince.Master.Name; //查出dog对象的同一时候。其Master的信息也就查了出来。
这是多对一关联映射的实现。
关联映射另一对一、一对多、多对多。
这些映射的出现是为了增强Nhibernate的查询功能。
PS:
总结:关联映射旨在进行面向对象的查询时候。可以将与实体相关联的实体信息同一时候载入出来,避免了二次查询,提高了查询的便捷性,使得的面向的对象地操作可以更好覆盖SQL的功能。实体之间的关联关系,另一对一。一对多,多对多。相它可以被设置为相同的关联映射,增强的搜索功能。
版权声明:本文博主原创文章,博客,未经同意不得转载。
摆弄【Nhibernate 协会制图--导乐陪伴分娩】的更多相关文章
- Nhibernate的Session管理
参考:http://www.cnblogs.com/renrenqq/archive/2006/08/04/467688.html 但这个方法还不能解决Session缓存问题,由于创建Session需 ...
- 以项目谈WebGIS中Web制图的设计和实现
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.背景介绍 一般WebGIS项目中,前端展示数据的流程基本是先做数据入 ...
- "NHibernate.Exceptions.GenericADOException: could not load an entity" 解决方案
今天,测试一个项目的时候,抛出了这个莫名其妙的异常,然后就开始了一天的调试之旅... 花了很长时间,没有从代码找出任何问题... 那么到底哪里出问题呢? 根据下面那段长长的错误日志: -- ::, ...
- nhibernate连接11g数据库
我框架的数据映射用 nhibernate连接多数据库,这次又增加了oracle11g,负责开发的同事始终连接不上,悲催的sharepoint调试是在不方便... 下面描述下问题的解决,细节问题有3个: ...
- 全自动迁移数据库的实现 (Fluent NHibernate, Entity Framework Core)
在开发涉及到数据库的程序时,常会遇到一开始设计的结构不能满足需求需要再添加新字段或新表的情况,这时就需要进行数据库迁移. 实现数据库迁移有很多种办法,从手动管理各个版本的ddl脚本,到实现自己的mig ...
- 跟我学习NHibernate (1)
引言:Nibernate概述 NHibernate是一个ORM框架,NHibernate是一个把C#对象世界和关系世界数据库之间联系起来的一座桥梁.NHibernate 能自动映射实体模型到数据库,所 ...
- 让OData和NHibernate结合进行动态查询
OData是一个非常灵活的RESTful API,如果要做出强大的查询API,那么OData就强烈推荐了.http://www.odata.org/ OData的特点就是可以根据传入参数动态生成Ent ...
- MVC Nhibernate 示例
首先,非常感谢提出问题的朋友们,使得本人又去深入研究了NHibernate的<Session-Per-Request 模式>. 前言: 谈到NHibernate大伙并不陌生,搞Java ...
- Nhibernate mapping 文件编写
生成工具软件 现在生成工具软件有很多了,例如商业软件:NMG.CodeSmith.Visual NHibernate,开源软件:MyGeneration.NHibernate Modeller.AjG ...
随机推荐
- 服务器编程入门(4)Linux网络编程基础API
问题聚焦: 这节介绍的不仅是网络编程的几个API 更重要的是,探讨了Linux网络编程基础API与内核中TCP/IP协议族之间的关系. 这节主要介绍三个方面的内容:套接字( ...
- Python数据结构-序表
序表解包: list=['aa','bb','cc'] [a1,a2,a3]=list
- hdu2412(树形dp)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2412 题意:给定一棵关系树 , 从中选择一些点 , 使这些点均不存在亲子关系 , 最多能取多少个点 , ...
- hdu1874畅通工程续 (dijkstra)
Problem Description 某省自从实行了很多年的畅通工程计划后,终于修建了很多路.不过路多了也不好,每次要从一个城镇到另一个城镇时,都有许多种道路方案可以选择,而某些方案要比另一些方案行 ...
- IOS应用程序生命周期详解
第一. IOS应用程序的五种状态: 1. Not running:应用还没有启动,或者应用正在运行但是途中被系统停止. 2. Inactive:当前应用正在前台运行,但是并不接收事件(当前或许正在执行 ...
- 两个实验操作系统-ubuntu在安装配置pintos
安前两次莫名其妙, 蛋疼的实验操作系统.. 首先下错了总结第一次. 使用最后gdb调试pintos什么时候, 这个错误将被报告: bochsrc.txt:8: Bochs is not compile ...
- Windows Phone开发(33):路径之其它Geometry
原文:Windows Phone开发(33):路径之其它Geometry 上一节中,我们把最复杂的PathGeometry给干了,生剩下几个家伙就好办事了.一起来见见他们的真面目吧. 一.LineGe ...
- Route-map简介
Normal 0 7.8 磅 0 2 false false false EN-US ZH-CN X-NONE MicrosoftInternetExplorer4 /* Style Definiti ...
- AndroidUI的组成部分GridView
java 代码例如以下(简单的知识点我会以凝视的形式解说): package com.gc.gridviewdemo; /** * @author Android将军 */ /** * 知识点解说: ...
- SpringSecutiry权限管理手册
SpringSecutiry权限管理手册: 请见以下URL: http://www.mossle.com/docs/auth/html/preface.html Spring Security 参考文 ...