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(实体名称, 实例)方法。

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(); }
运行结果:
查询:

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标签,大家可以先想想映射怎么改写呢。
精彩图集
精彩文章
热门标签
抓取网页正文
改变
指定日期
XML操作
自动增长列
最大Id
php php自定
数据库名
跨iframe
find函数
数据存储
按比例
创建目录
指令
选不中
注入数据库
JS多语言
twisted
select加锁
脚本自身修改
__setattr__
主从
DDL
Too
可逆加密算法
sup方法
线程并发
自增长
段空间
Oracle字符集
网络打印
svn
复制文件夹
横屏
Promise
php php写入
python函数
页面宽度
memcach
context
百度热词
发布apk
相
django-suit
for语句
四叉树
目录传输
无法解析
Tab_control控
android设计模式
ForLinux2.6
memcpy()
草稿
发布项目
iis配置php
打
分页问题
注解
$符
UDP
赞助商链接
@CopyRight 2002-2008, 1SOHU.COM, Inc. All Rights Reserved QQ:1010969229