3

たとえば、エンティティがあります。次のプロパティを使用します。

public class Entity
{
   public int CustomerId { get; set; }
   public Customer { get; set; } 
}

CustomerId を 2 回マップするにはどうすればよいですか。int プロパティに 1 回、多対 1 の関係に 1 回 ?

<many-to-one name="Customer" column="[CustomerId]" class="Customer"/>
<property name="CustomerId" column="[CustomerId]" type="Int64" />

これだけでは、うまくいきません。私はすでに試しましたが、読み取り専用にしましたが、成功しませんでした。

4

2 に答える 2

8

そのうちの 1 つを readonly (inser/udpate false)としてマップし、次のように参照する必要があります。formula

<many-to-one name="Customer" column="[CustomerId]" class="Customer"/>
<property name="CustomerId" formula="[CustomerId]" type="Int64" insert="false" update="false" />

その後、正しく動作するはずです。両方のプロパティを Select、Where... order by に使用できます

于 2012-12-21T11:34:50.097 に答える
1

CustomerId をマップする必要はありません。Customer.CustomerId からアクセスできます。遅延読み込みを使用している場合、CustomerId はプロキシ オブジェクトに入力されるため、追加の選択をトリガーすることなく常に使用できます。

絶対に公開する必要がある場合は、null 許容の読み取り専用プロパティとして公開します。

   public Customer { get; set; } 
   public int? CustomerId
   {
       get { return Customer == null ? (int?)null: Customer.CustomerId }
   }
于 2012-12-21T22:02:44.313 に答える