摆弄【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 ...
随机推荐
- 单点更新线段树 RMQ
D. Xenia and Bit Operations time limit per test 2 seconds memory limit per test 256 megabytes input ...
- POJ 2524 :Ubiquitous Religions
id=2524">Ubiquitous Religions Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 231 ...
- AJAX POST请求中參数以form data和request payload形式在servlet中的获取方式
HTTP请求中,假设是get请求,那么表单參数以name=value&name1=value1的形式附到url的后面,假设是post请求,那么表单參数是在请求体中,也是以name=value& ...
- 查看mysql一些命令的数据库状态
命令: show processlist; 假设是root帐号,你能看到全部用户的当前连接.假设是其他普通帐号,仅仅能看到自己占用的连接. show processlist;仅仅列出前100条, ...
- Win7+ubuntu kylin+CentOS 6.5三系统安装图文教程
Win7+ubuntu kylin+CentOS 6.5三系统安装图文教程 引言:原本机子上已经装好了win7+Ubuntu Kylin 由win7引导,而不是Ubuntu的grub引导的双系统(安装 ...
- centos6搭建本地openstack软件源
1.把相关软件包所有下载到本地机器 wget -np -nH –cut-dirs=1 -r -c -L –exclude-directories=repodata –accept=rpm,gz,xml ...
- poj 2010 Moo University - Financial Aid (贪心+线段树)
转载请注明出处,谢谢http://blog.csdn.net/ACM_cxlove?viewmode=contents by---cxlove 骗一下访问量.... 题意大概是:从c个中选出n个 ...
- Xamarin Studio Android 配置
原文:Xamarin Studio Android 配置 C#依托于mono平台可以实现Unix平台服务器端开发已经不是什么新鲜事了,而Xarmain公司(初始成员大多来自原Mono.MonoTouc ...
- 新型I/O架构引领存储之变(四)
新型I/O架构引领存储之变(四) 作者:廖恒 应对挑战--商务及技术考量 本文前面的部分分析了砖块模式与生俱来的总拥有成本(TCO)过高的问题.为了战胜这一挑战,超大规模数据中心的运营者须要从两个不同 ...
- Leet code —Jump Game
问题叙述性说明: Given an array of non-negative integers, you are initially positioned at the first index of ...