2012-01-03 5 views
0

ここは私の問題です。Sharp Liteアーキテクチャを使用したFluent NHibernateの同じテーブルに2つの外部キーを使用するための命名規則

私は顧客テーブルと住所テーブルを持っています。顧客テーブルには、アドレステーブルへの2つの外部キーがあります。 ShippingAddressFKとBillingAddressFK

通常、私はちょうど1つの外部キーであれば、私はちょうどAddressFKを持っています。しかし、それは2つ以来、私はそれについてどうやって行くのか分からない。

私はこれを見た: Fluent Nhibernate AutoMapping -- 2 foreign keys to same table?

をしかし、私はシャープLiteのアーキテクチャのオーバーライドは.csファイルにそれを変換するかどうかはわかりません。

public class OrderOverride : IOverride 
    { 
     public void Override(ModelMapper mapper) { 
      mapper.Class<Order>(map => map.Property(x => x.OrderStatus, 
       status => { 
        status.Type<OrderStatusCustomType>(); 
        status.Column("OrderStatusTypeFk"); 
       })); 
     } 
    } 

私は彼らが私はシャープでオーバーライドクラスのこの種に合わせて上記の溶液を変更するかどうかはわかりません似ているがわかります。このディレクトリのmystore例で

は、私が見つけることができる最も近かったですLiteのアーキテクチャ

答えて

0

ので、あなたがにリンク貼り付けたコードやその他の問題のコードに基づいて擬似コードを考えるこれを試していないのVisual Studioへのアクセスなし:

public class CustomerOverride : IOverride 
{ 
    public void Override(ModelMapper mapper) { 
     mapper.Class<Customer>(map => map.Property(x => x.BillingAddress, 
      address => { 
       address.Type<Address>(); 
       address.Column("BillingAddressFk"); 
      })); 
     mapper.Class<Customer>(map => map.Property(x => x.ShippingAddress, 
      address => { 
       address.Type<Address>(); 
       address.Column("ShippingAddressFk"); 
      })); 
    } 
} 

私はちょうどOrder override in SharpLiteを見ましたが、これは流暢なnhibernateではありません、それは私が一度も使用していないnhibernateコードマッピングです。複数のプロパティのオーバーライドを定義する正しい方法ではないかもしれませんが、うまくいけば上のコードがうまくいきます。 fluentnhibernateタグをnhibernateに変更しないと、そのことについてもっと知っている人もいます。

+0

これも私の最初の本能でした。しかし、それはどのように行われていません。そのようにすると、次の例外が発生します。「IUserType、ICompositeUserTypeまたはITypeを実装する予想される型」 パラメータ名:persistentType これは完全に別のものかもしれないと思っています。 – Bill

0

あなたが参照している例は、プロパティの1つをEnumのようなカスタムタイプにマッピングするためのものです。

関係を複数のアドレスにマップし、それにあなたの慣習とは異なる列名を付ける必要があります。

public void Override(ModelMapper mapper) 
{ 
    mapper.Class<Customer>(map => 
          map.ManyToOne(
           x => x.BillingAddress, 
           x => x.Column("BillingAddressFk"))); 

    mapper.Class<Customer>(map => 
          map.ManyToOne(
           x => x.ShippingAddress, 
           x => x.Column("ShippingAddressFk"))); 
} 

お知らせ代わりPropertyManyToOne

関連する問題