0

私は次のような2つのエンティティを持っています

   public class Person
        {
            public int PersonId { get; set; }
            public string Name { get; set; }
            public int DataId { get; set; }
    }
     public class Data
        {
                public int DataId { get; set; }
        public string details { get; set; }
        public int PersnId{ get; set; }
}

ご覧のとおり、両方の表は相互に関連しています。両方のテーブルに同時にデータを挿入するソリューションが必要です。私は1-人を挿入し、2-データを挿入してから人を更新します。それは機能しますが、更新を排除する方法を探しています。個人テーブルのマッピング:

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="TestNhibrinate" assembly="TestNhibrinate">
    <class name="TestNhibrinate.Entites.Person" table="Person" lazy="false">
        <id name="PersonId" column="PersonId" type="int" >
            <generator class="identity" />
        </id>
        <property name="Name" column="Name" type="String" length="50" />
        <many-to-one name="Adress" class="TestNhibrinate.Entites.Adress" column="AdressId"/>        
    </class>
</hibernate-mapping>

データの同じマッピング。

4

1 に答える 1

0

エンティティは次のようになります。

       public class Person
            {
             public Person()
             {
                DataCollection = new List<Data>();
             }
                public int PersonId { get; set; }
                public string Name { get; set; }
                public int DataId { get; set; }
                public IList<Data> DataCollection{get;set;}

                public void AddData(Data item)
                {
                   if(!DataCollection.Contains(item))
                   {
                      DataCollection.Add(item);
                   }
                }
        }
         public class Data
            {
                    public int DataId { get; set; }
            public string details { get; set; }
            public Person Person{ get; set; }
    }

このようにして、個人からデータへの1対多の関係を作成します。データを追加した後で個人エンティティを保存すると、データも保持されます。これは、カスケードオプションのオフコースによって異なります。

私は常にFluentまたはAutoマッピングを使用しているため、これをXMLマッピングでマッピングする方法がわかりません。

于 2012-10-08T09:00:40.080 に答える