NHibernate2.1实例使用教程之entity-name特性介绍(2)
3.Test 先保存一些Domain,注意这里用到了重载session.Save(实体名称, 实例)方法。 Code [http://www.xueit.com] using (var s = Sessions.OpenSession()) using (var tx = s.BeginTransact
3.Test
先保存一些Domain,注意这里用到了重载session.Save(实体名称, 实例)方法。
Code [http://www.xueit.com]
using (var s = Sessions.OpenSession()) using (var tx = s.BeginTransaction()) { var rf = new Reptile { Description = "父" }; var rm = new Reptile { Description = "母" }; var rc1 = new Reptile { Description = "子1" }; var rc2 = new Reptile { Description = "子2" }; var rfamily = new Family<Reptile> { Father = rf, Mother = rm, Childs = new HashedSet<Reptile> { rc1, rc2 } }; var hf = new Human { Description = "父亲", Name = "Father" }; var hm = new Human { Description = "母亲", Name = "Mother" }; var hc1 = new Human { Description = "孩子", Name = "Child" }; var hfamily = new Family<Human> { Father = hf, Mother = hm, Childs = new HashedSet<Human> { hc1 } }; //重载session.Save(实体名称, 实例)方法 s.Save("ReptilesFamily", rfamily); s.Save("HumanFamily", hfamily); tx.Commit(); }
运行结果:

查询:
Code [http://www.xueit.com]
using (var s = Sessions.OpenSession()) using (var tx = s.BeginTransaction()) { IList<Family<Human>> hf = s.CreateQuery("from HumanFamily").List<Family<Human>>(); Assert.That(hf.Count, Is.EqualTo(1)); Assert.That(hf[0].Father.Name, Is.EqualTo("Father")); Assert.That(hf[0].Mother.Name, Is.EqualTo("Mother")); Assert.That(hf[0].Childs.Count, Is.EqualTo(1)); IList<Family<Reptile>> rf = s.CreateQuery("from ReptilesFamily").List<Family<Reptile>>(); Assert.That(rf.Count, Is.EqualTo(1)); Assert.That(rf[0].Childs.Count, Is.EqualTo(2)); tx.Commit(); }
运行结果:

代码
Source Project Home:http://code.google.com/p/yjinglee/
SVN CheckOut:http://yjinglee.googlecode.com/svn/trunk/
结语
上面的映射还是有点复杂,可以想想更有趣的是只持久化Family<T>类。因为我创建一张表(家族表)而我需要一些具体的类型Family<Reptile>和Family<Human>。在这种情况下我不能说Family<Reptile>是子类(在我的Domain中,没有Family<T>的父类 )。可以使用<discriminator>、discriminator-value和where标签,大家可以先想想映射怎么改写呢。
精彩图集
精彩文章
热门标签
Iisftp.vbs
linux使用
360
见解
scp
使用指南
menu
测试
宽字节字符
字母数字组合
httpclient
判断编
SqlServer200
0day
JVM性能优化
nfc应用
引擎
开发环境
SWF动画截图
独立
goto函数
delegate
infile
LIFO
promise化
总记录
Parse
后台运
80004005
Nginx访问日志
细粒度审计
文件编码
SQL-INJECTIO
选项值
变量命名
linux安装mysql
MySQL索引
倒计时跳转
调整列宽
数字相加
触摸事件
元素移动
索引器
c异或运算
远程拷贝
应用程序开发
行政区划数据
强制不换行
编译python
$.post
文件目录操作
添加CSS类
ListActivity
开启curl
动态树
彩图
filter
essential
NGEN
双网关
赞助商链接
@CopyRight 2002-2008, 1SOHU.COM, Inc. All Rights Reserved QQ:1010969229

