nhibernate学习之集合组合依赖

来源:互联网 发布:丙纶和js 编辑:程序博客网 时间:2024/04/28 01:50
1.学习目标
   还是学习compenent的用法,上节实现了简单字段的组合,这节中将讨论两个问题:1.依赖对象有一个指向容器对象的引用。2。集合依赖
2.开发环境和必要准备
   开发环境为:windows 2003,Visual studio .Net 2005,Sql server 2005 developer edition
  必要准备:学习前六篇nhibernate学习系列Nhibernate学习之起步篇-1  ,Nhibernate学习起步之many-to-one篇 ,Nhibernate学习之many-to-many篇 ,nhibernate学习之三级联(Ternary Associations)篇Nhibernate学习之性能改善1nhibernate性能之二级缓存篇 ,nhibernate学习之简单组合的映射
3.通过parent为依赖组合对象映射一个指向容器对象的引用
  CompositeUser.cs 
  UserName.cs
映射文件:CompositeUser.hbm.xml
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
    
<class name="NhibernateSample1.CompositeUser,NhibernateSample1" table="CompositeUser" lazy="false">
        
<id name="Uid" column="Uid" unsaved-value="0">
            
<generator class="native" />
        
</id>
        
<component name="Name" class="NhibernateSample1.UserName,NhibernateSample1">
            
<parent name="User"></parent>
            
<property name="FirstName" column="FirstName"></property>
            
<property name="LastName" column="LastName"></property>
        
</component>
    
</class>
</hibernate-mapping>
注意parent是指向容器对象的引用
加载一个CompositeUser对象,结果如图

4. 集合组合依赖
Composite.cs
UserName.cs
映射文件CompositeUser.hbm.xml
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
    
<class name="NhibernateSample1.CompositeUser,NhibernateSample1" table="CompositeUser" lazy="false">
        
<id name="Uid" column="Uid" unsaved-value="0">
            
<generator class="native" />
        
</id>
        
<set name="UserNames" table="UserNames" lazy="true">
            
<key column="Uid"/>
            
<composite-element  class="NhibernateSample1.UserName,NhibernateSample1">
                
<property name="FirstName" column="FirstName"></property>
                
<property name="LastName" column="LastName"></property>
            
</composite-element >
        
</set>
        
<property name="BirthDay" type="DateTime"></property>
    
</class>
</hibernate-mapping>
注意:Composite可以包含集合也可以不包含集合,上面这样的配置就不包括集合,映射的属性可以选择为List,map,bag,idbag
运行添加一个Composite的测试代码,会在数据库中建立两个数据表 CompositeUser和UserNames
效果图
 
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 移动宽带红灯亮怎么办 ie打不开网页怎么办win10 win10系统ie打不开怎么办 笔记本电脑玩lol卡怎么办 火狐浏览器电脑版打不开怎么办 手机淘宝没密码怎么办 实体店不让退货怎么办 出生公证双认证怎么办 手机淘宝网速慢怎么办 淘宝开店认证不通过怎么办 开网店不会做图怎么办 库乐队上传错误怎么办 淘宝定金不退怎么办 淘宝店激活认证怎么办 淘宝店铺不卖怎么办 唯品会不支持退换货怎么办 pr里面的aep怎么办 开淘宝骗了怎么办 平板ipad已停用怎么办 ipad2卡 反应慢怎么办 无法弹出淘口令怎么办? ipad账户被禁用怎么办 ipad账号被锁定怎么办 苹果平板停用了怎么办 pad忘记id密码怎么办 京东实名开小差怎么办 路由器信号太强怎么办 wifi被破解了怎么办 眼睛被电光刺伤怎么办 被紫外线灯照射怎么办 浴巾洗了发硬怎么办 枕巾上的头油怎么办 洗手盆缝隙漏水怎么办 洗手盆裂缝漏水怎么办 洗手盆堵了怎么办 征信账号注册怎么办 注册不了征信号怎么办 阿里巴巴一键铺货到淘宝发货怎么办 淘宝购物的问题怎么办 买家评价被删除怎么办 淘宝订单虚假交易怎么办