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

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)可以做到。

<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>
从映射可以看出,一个类实现所有类型家庭,但使用两个不同的强类型持久化映射。
收藏文章
精彩图集
精彩文章
- 暂无记录。
热门标签
验证组件
上传类
多关键字
php php简
Windows10_En
dll生成lib
数据库开发
C语言宏
Microsoft
DCL
javascript性能
css切换
abstract
语句练习
gravity
条形码生成器
Enumeration
数据库查询
下拉字段
php php中将
列合并
巧妙
屏蔽退格键
python爬虫教程
转移表
排列组合问题
从左往右
jvm内存溢出
您的
转换器
代码查询
前导0
c语言网络
两值之间
及
函数缺省值
账号管理
listview
最长公共子串
XCache
自定义图片
php php中获得
禁止锁屏
StringBuilde
错误日志
任意对象
手游
SqlServer200
filte
posix消息队列
创建XML
中文翻译
改变样式
主机名配置
自动化打开IE
DocTypes
随即值
获取值
$(document)
帐户
赞助商链接
@CopyRight 2002-2008, 1SOHU.COM, Inc. All Rights Reserved QQ:1010969229