<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      我的NHibernate之路(2)---主從表(一對多)配置篇

        通過我上篇文章的配置,單獨做一張表的操作已經夠了。但是在我們實際開發的過程中,很多時候數據庫中都存在著主從表等關系,這時候就存在主表中的一條記錄可能對應多條從表中的記錄。那么這種情況下,我們還用上篇文章的的簡單配置就不夠了。下面我通過一個實際的例子說說Nhibernate中主從表的配置。

        先介紹開發環境和軟件版本:VS2008 SP1、NHibernate-2.1.2.GA-bin。在下面的例子中,就兩張表,一張Class表,一張Student表。這就是一個典型的主從表的關系。

        

        這種情況下的Nhibernate配置與上篇中的相同,所需要改變的是映射文件的配置。操作如下:

        1、映射文件配置。

        主表的映射:一對多的關系。配置如下:

       

      <?xml version="1.0" encoding="utf-8" ?>
      <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="Model" namespace="NHibernateSample.Model">
      <class name="NHibernateSample.Model.Class, Model" table="`Class`">
      <id name="Id" type="Int32" unsaved-value="0">
      <column name="ClassId" length="4" sql-type="int" not-null="true" unique="true" index="PK_Class"/>
      <generator class="native" />
      </id>
      <property name="ClassCode" type="String">
      <column name="ClassCode" length="50" sql-type="varchar" not-null="false"/>
      </property>
      <property name="PeopleCount" type="Int32">
      <column name="PeopleCount" length="4" sql-type="int" not-null="false"/>
      </property>
      <bag name="Students" inverse="true" lazy="true" cascade="all-delete-orphan">
      <key column="ClassId"/>
      <one-to-many class="NHibernateSample.Model.Student, Model"/>
      </bag>
      </class>
      </hibernate-mapping>

       

       

        其中,黑色部分便是對一對多關系的配置。說明如下:

        bag:對象結合。結合中的元素可以重復。相當于.Net中的IList或者IList<T>.name="Students"說的是在實體類Class有一個Students的屬性。inverse=“TRUE”說名是子實體類維護關聯關系,它默認為FALSE,即夫實維護關聯關系。cascade="all-delete-orphan"指明當添加主表中的記錄時,會添加相關的記錄到字表中,此時相當于“save-update”。當刪除主表中的記錄時,會級聯刪除字表中相關聯的記錄,此時相當于“delete”在父類中刪除對應數據庫記錄時。即在子表中不會出現一些與主表無關聯的數據。

        key:column="ClassId"說明是"ClassId"列與字表關聯

        one-to-many class="NHibernateSample.Model.Student, Model"。one-to-many指明是一對多的關系。在此映射文件中一當然是指Class實體。多指的是Model程序集中的、命名空間為NHibernateSample.Model的Student實體

        從表的映射:多對已的關系。配置如下:

       

      <?xml version="1.0" encoding="utf-8" ?>
      <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="Model" namespace="NHibernateSample.Model">
      <class name="NHibernateSample.Model.Student, Model" table="Student">
      <id name="Id" type="Int32" unsaved-value="0">
      <column name="StudentID" length="4" sql-type="int" not-null="true" unique="true" index="PK_Student"/>
      <generator class="native" />
      </id>
      <property name="Name" type="String">
      <column name="Name" length="50" sql-type="varchar" not-null="false"/>
      </property>
      <property name="Tel" type="String">
      <column name="Tel" length="50" sql-type="varchar" not-null="false"/>
      </property>
      <many-to-one name="Class" class="NHibernateSample.Model.Class, Model">
      <column name="ClassId" length="4" sql-type="int" not-null="false"/>
      </many-to-one>
      </class>
      </hibernate-mapping>

       

       

       

       

        這里我也只說說many-to-one含義.

        many-to-one:指的是多個Student對應一個Class, name="Class"指Student實體中有一個Class的屬性。Class位于程序集Model中,它對應的是NHibernateSample.Model.Class類。

        column namee="ClassId"指的是ClassId和Class表關聯

        2、對涉及的主從表的添加操作?! ?/p>

       

                  Class c = new Class();           //班級類
      
                  Student stu = new Student();   //學生類
                  stu.Name = "tao";
                  stu.Tel = "123123123";
                  stu.Class = c;
      
                  c.PeopleCount = 30;      
                  c.ClassCode = "03510236";
                  c.Students.Add(stu);      //將學生添加到班級中
      
                  ClassBLL cBLL = new ClassBLL();
                  cBLL.AddClass(c);       //將班級、學生持久化到數據庫
      

       

       

        總結:多對一得映射和沒有主從表關聯關系的表不同的地方就是需要在主、從表中分別指明映射關系,即應分別在主表對應的實體類的映射文件與從表對應的實體文件中表現出來。添加的時候只需要將從表對應的實體添加到主表對應的實體中,然后添加主表對應的實體即完成了對主從表的操作。

        謝謝您的閱讀,希望此文對你有一定的幫助!

      posted @ 2010-09-23 00:40  tyb1222  閱讀(3309)  評論(7)    收藏  舉報
      主站蜘蛛池模板: 亚洲成在人网站av天堂| 国产精品成人午夜福利| 无码a∨高潮抽搐流白浆| 国产精品久久国产精麻豆| 国产精品鲁鲁鲁| 国产av不卡一区二区| 午夜福利日本一区二区无码| 久久久久亚洲A√无码| 国产女精品视频网站免费| 中文字幕一区二区三区精华液| 成人午夜av在线播放| 午夜综合网| 99精品国产精品一区二区| 中国熟妇毛多多裸交视频| 平塘县| 大尺度国产一区二区视频| 国产精品内射在线免费看| 欧美大胆老熟妇乱子伦视频 | 中文字幕在线亚洲日韩6页| 新建县| 中文字幕人妻互换av久久| 国产一区二区不卡91| 马关县| 国产成人无码AV片在线观看不卡| 久久精品免视看国产成人| 平潭县| 久久久久人妻精品一区三寸| 双腿张开被5个男人调教电影| 日韩av片无码一区二区不卡| 国产亚洲精品97在线视频一| 国产愉拍91九色国产愉拍| 亚洲欧美人成网站在线观看看| 亚洲高清国产拍精品熟女| 亚洲日产韩国一二三四区| 福利一区二区不卡国产| 99午夜精品亚洲一区二区| 少妇性l交大片| 国产精品一区二区三区污| 另类图片亚洲人妻中文无码| 久久精品国产99国产精品澳门| 亚洲中文字字幕精品乱码|