2011-02-07 7 views
0

私は、Entity Frameworkとデータベースのアプリケーションが新しくなりました。注文モデルクラスのCustomerIdのプロパティと共にCustomerのプロパティが必要ですか?

次のようにCustomerデータモデルクラスがあることしてみましょう:

public class Customer 
{ 
    public int CustomerId {get;set;} 
    public string Name {get;set;} 
    //others properties have been omitted for the sake of simplicity. 
} 

そしてOrderデータモデル:

public class Order 
{ 
    public int OrderId {get;set;} 
    public int CustomerId {get;set;} 
    public Customer Customer {get;set;} 
    // other properties have been omitted for the sake of simplicity. 
} 

私の質問は:「私たちは一緒にプロパティでCustomerのプロパティが必要ですCustomerIdOrderモデルクラス?

答えて

2

いいえ、そうではありません。 OrderクラスのCustomerオブジェクトは、顧客IDを識別するのに十分です。ご注文から顧客IDを取得したい場合は、だから、

public class Customer { 
    private Long customerId; 
    private String name; 
    private Set<Order> orders = new HashSet<Order>(); 

    // ... getters/setters 
} 

public class Order { 
    private Long orderId; 
    private Customer customer; 

    // ... getters/setters 
} 

- :あなたは顧客は、簡単にこのような何かを持っているどのように多くの受注を知っているように、さらに、あなたは、Customerクラスの注文のコレクションをお勧めします -

+0

「Order」クラスに 'Customer'プロパティを持っているか、' Order'クラスに 'CustomerId'プロパティを持っている方がよいでしょうか? – xport

+1

どちらもほぼ同じですが、パフォーマンスの差はごくわずかです。さらに、 'Customer'クラスにすべての顧客関連情報をグループ化し、' Order'クラスに 'customerId'プロパティを設定することで、データカプセル化の感覚を失います。つまり、2つの場所に 'customerId'プロパティがあり、1日に 'customerId'値が変更された場合は、その場所全体で' customerId'値を変更する必要があります。 – limc

+0

ありがとうございます。あなたの説明に+1。 – xport

関連する問題