NHibernate2.1实例使用教程之entity-name特性介绍
NHibernate2.1另外的一个新特性实体名称(entity-name)。 实体名称(entity-name)在Class的Mapping中使用,一般而言,我们并不特意定义它,只有在其Class的Name的属性有点复杂的时候使用一个别名。在
NHibernate2.1另外的一个新特性——实体名称(entity-name)。
实体名称(entity-name)在Class的Mapping中使用,一般而言,我们并不特意定义它,只有在其Class的Name的属性有点复杂的时候使用一个别名。在保存Domain的时候,ISession.Save()也有重载方法。
典型实例
这个实例使用继承映射,对于子类的名称比较复杂,我们可以使用entity-name来重新定义它的名称。
1.Domain
Code [http://www.xueit.com]
public abstract class Animal { public virtual int Id { get; private set; } public virtual string Description { get; set; } } public class Reptile : Animal { public virtual float BodyTemperature { get; set; } } public class Human : Animal { public virtual string Name { get; set; } public virtual string NickName { get; set; } public virtual DateTime Birthdate { get; set; } } public class Family<T> where T : Animal { public virtual int Id { get; private set; } public virtual T Father { get; set; } public virtual T Mother { get; set; } public virtual ISet<T> Childs { get; set; } }
2.Mapping
在数据库中我想每个Animal使用不同的表,所以需要三个不同的表。当然,所有"Kinds"的家庭只有一个表可能不够,因为我不可能有一个ForeignKey指向两个表。我需要一个表有强类型Family。使用NHibernate新的标签:实体名称(entity-name)可以做到。
Code [http://www.xueit.com]
<class name="Animal"> <id name="Id" column="animalId"> <generator class="hilo"/> </id> <property name="Description"/> <joined-subclass name="Reptile"> <key column="animalId"/> <property name="BodyTemperature"/> </joined-subclass> <joined-subclass name="Human"> <key column="animalId"/> <property name="Name"/> <property name="NickName"/> <property name="Birthdate" type="Date"/> </joined-subclass> </class> <class name="Family`1[[Reptile]]" table="ReptilesFamilies" entity-name="ReptilesFamily"> <id name="Id" column="familyId"> <generator class="hilo"/> </id> <many-to-one name="Father" class="Reptile" cascade="all"/> <many-to-one name="Mother" class="Reptile" cascade="all"/> <set name="Childs" generic="true" cascade="all"> <key column="familyId" /> <one-to-many class="Reptile"/> </set> </class> <class name="Family`1[[Human]]" table="HumanFamilies" entity-name="HumanFamily"> <id name="Id" column="familyId"> <generator class="hilo"/> </id> <many-to-one name="Father" class="Human" cascade="all"/> <many-to-one name="Mother" class="Human" cascade="all"/> <set name="Childs" generic="true" cascade="all"> <key column="familyId" /> <one-to-many class="Human"/> </set> </class>
从映射可以看出,一个类实现所有类型家庭,但使用两个不同的强类型持久化映射。
精彩图集
精彩文章
热门标签
表单设计
水印效果
找零钱
RC
mutimap
的小问题
很不错的
Oracle索引
置顶
两个日期
SendKey
题的
lvs
用户过多
Mempodipper本
VC6.0
复杂度
安装教程
分页存储过程
高性能优化
curl存储cookie
给定类
图片去色
分割函数
空隙
限制返回字段
字符串反转
集合
SBIT
First_Value
php环境配置
php时间戳转换
isinstance
影像
fadeTo
创建数据表
工具栏
jsp,dwr,级联
编译错误信息
Web安全
双向循环链表
Read-only
去除
激活验证
java变量
驱动器
义和
PHP SPS Dis
java网络编程
汉诺塔问题
二分查找
watch机制
Cocos2d-x
文件抓取
php构造函数
__setattr__
截取图片
常常出现的
Schema表
误删数据
赞助商链接
@CopyRight 2002-2008, 1SOHU.COM, Inc. All Rights Reserved QQ:1010969229

