2012-04-25 5 views
0

EFで多対多関係の例をいくつか見たことがありますが、解決方法がわからない状況が続いています。関係顧客、会議、ゲストのモデリング

イベント 2のエンティティはお客様です、ゲスト、イベント 1)顧客のレジスタは、各顧客は、彼が彼が に登録されていますことをイベントにもたらすことができるゲストを持っている)、このシナリオをモデル化するために

をしようとしています(例えば、彼がイベント1に登録していて、数量が3であれば2人を割り当てることができます)

私は多人数のb/wゲストとイベントを作ったシンプルなシナリオを使って試してみました。良い、 と私はevents.guestsナビゲーションプロパティ

0を使用してイベントにゲストを追加できます

しかし、私はそれを顧客と一緒に働かせる必要があります。これはGuestIdを持っているマッピングテーブルGuestEventを生成

public class Guest 
{ 
    public int GuestId { get; set; } 
    public string GuestName { get; set; } 
    public virtual ICollection<Event> Events { get; set; } 
} 

public class Event 
{ 
    public int EventId { get; set; } 
    public string EventName { get; set; } 
    public virtual ICollection<Guest> Guests { get; set; } 
} 

でEventId

私は、マッピングテーブルを追加し、顧客のエンティティで、次のようになります理解して何から

はcustomerIdでEventId、GuestId しかし、私が設定するのですかそれ?

答えて

0

このような何かが動作するはずです:これは、お客様とイベントとの関係が1であると仮定し:1、およびすべての名前情報は、お客様のオブジェクトの上にある...

public class Guest 
{ 
    public int GuestId { get; set; } 
    public string GuestName { get; set; } 
    public int CustomerId { get; set; } 
    public virtual Customer Patron { get; set; } 
    public virtual ICollection<Event> Events { get; set; } 
} 

public class Event 
{ 
    public int EventId { get; set; } 
    public string EventName { get; set; } 
    public virtual ICollection<Guest> Guests { get; set; } 
    public virtual ICollection<Customer> Customers { get; set; } 
} 

public class Customer 
{ 
    public int CustomerId { get; set; } 
    public int EventId { get; set; } 
    public virtual ICollection<Guest> Guests { get; set; } 
    public virtual Event Event { get; set; } 
} 
+0

顧客とイベントの関係が** ** ** 1:1でないように、彼は「イベントの顧客登録」と述べました。 –

+0

はい、正しい、顧客は同時に複数の登録を持つことができます – arj

1

CustomerEventクラスが保持する必要がありますゲストは特定の顧客と特定のイベントにリンクする必要があるため、Guestsです。同じゲストが別のイベントに行くことも、別の顧客から招待されることもできます。

public class Customer 
{ 
    public int CustomerId { get; set; } 
    public string CustomerName { get; set; } 
    public virtual ICollection<CustomerEvent> CustomerEvents { get; set; } 
} 

publix class CustomerEvent 
{ 
    public int CustomerEventId { get; set; } 
    public virtual int CustomerId { get; set; } 
    public virtual Customer Customer { get; set; } 
    public virtual int EventId { get; set; } 
    public virtual Event Event { get; set; } 
    public virtual ICollection<Guest> Guests { get; set; } 
} 

public class Event 
{ 
    public int EventId { get; set; } 
    public string EventName { get; set; } 
    public virtual ICollection<CustomerEvent> CustomerEvents { get; set; } 
} 

public class Guest 
{ 
    public int GuestId { get; set; } 
    public string GuestName { get; set; } 
    public virtual ICollection<CustomerEvent> CustomerEvents { get; set; } 
} 
+0

おかげさまで、スーパープロンプトの回答は、より多くの今日の病気の仕事とうまくいけば良いアイデアを持って、これは間違いなくかなりのものをクリア! – arj

+0

@arj私の答えがあなたを助けてくれたかどうか教えていただけますか? –

関連する問題