天天看点

nhibernate学习之集合组合依赖

1.学习目标

   还是学习compenent的用法,上节实现了简单字段的组合,这节中将讨论两个问题:1.依赖对象有一个指向容器对象的引用。2。集合依赖

2.开发环境和必要准备

   开发环境为:windows 2003,Visual studio .Net 2005,Sql server 2005 developer edition

3.通过parent为依赖组合对象映射一个指向容器对象的引用

  CompositeUser.cs 

nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖

public class CompositeUser

nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖

{

nhibernate学习之集合组合依赖

        int _uid;

nhibernate学习之集合组合依赖

        UserName _name;

nhibernate学习之集合组合依赖

        public int Uid

nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖

            get

nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖

                return _uid;

nhibernate学习之集合组合依赖

            }

nhibernate学习之集合组合依赖

            set

nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖

                _uid = value;

nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖

        }

nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖

        public UserName Name

nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖

                return _name;

nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖

                _name = value;

nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖

    }

  UserName.cs

nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖

 public class UserName

nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖

        private string _firstName;

nhibernate学习之集合组合依赖

        private string _lastName;

nhibernate学习之集合组合依赖

        CompositeUser _user;

nhibernate学习之集合组合依赖

        public string FirstName

nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖

                return _firstName;

nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖

                _firstName=value;

nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖

        public string LastName

nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖

                return _lastName;

nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖

                _lastName = value;

nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖

        public CompositeUser User

nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖

                return _user;

nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖

                _user = value;

nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖

映射文件:CompositeUser.hbm.xml

nhibernate学习之集合组合依赖

<?xml version="1.0" encoding="utf-8" ?>

nhibernate学习之集合组合依赖

<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">

nhibernate学习之集合组合依赖

    <class name="NhibernateSample1.CompositeUser,NhibernateSample1" table="CompositeUser" lazy="false">

nhibernate学习之集合组合依赖

        <id name="Uid" column="Uid" unsaved-value="0">

nhibernate学习之集合组合依赖

            <generator class="native" />

nhibernate学习之集合组合依赖

        </id>

nhibernate学习之集合组合依赖

        <component name="Name" class="NhibernateSample1.UserName,NhibernateSample1">

nhibernate学习之集合组合依赖

            <parent name="User"></parent>

nhibernate学习之集合组合依赖

            <property name="FirstName" column="FirstName"></property>

nhibernate学习之集合组合依赖

            <property name="LastName" column="LastName"></property>

nhibernate学习之集合组合依赖

        </component>

nhibernate学习之集合组合依赖

    </class>

nhibernate学习之集合组合依赖

</hibernate-mapping>

注意parent是指向容器对象的引用

加载一个CompositeUser对象,结果如图

nhibernate学习之集合组合依赖

4. 集合组合依赖

Composite.cs

nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖

        ISet _userNames = new HashedSet();

nhibernate学习之集合组合依赖

        DateTime _birthDay = DateTime.Now;

nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖

        public ISet UserNames

nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖

                return _userNames;

nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖

                _userNames = value;

nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖

        public DateTime BirthDay

nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖

                return _birthDay;

nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖

                _birthDay = value;

nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖

UserName.cs

nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖

public class UserName

nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖

映射文件CompositeUser.hbm.xml

nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖

        <set name="UserNames" table="UserNames" lazy="true">

nhibernate学习之集合组合依赖

            <key column="Uid"/>

nhibernate学习之集合组合依赖

            <composite-element  class="NhibernateSample1.UserName,NhibernateSample1">

nhibernate学习之集合组合依赖

                <property name="FirstName" column="FirstName"></property>

nhibernate学习之集合组合依赖

                <property name="LastName" column="LastName"></property>

nhibernate学习之集合组合依赖

            </composite-element >

nhibernate学习之集合组合依赖

        </set>

nhibernate学习之集合组合依赖

        <property name="BirthDay" type="DateTime"></property>

nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖

注意:Composite可以包含集合也可以不包含集合,上面这样的配置就不包括集合,映射的属性可以选择为List,map,bag,idbag