0

コード ファーストを使用した EF での多対多の関係の例をいくつか見てきましたが、解決方法がわからない状況に遭遇しました。

このシナリオをモデル化しようとしています

エンティティは顧客、ゲスト、イベントです 1.) 顧客はイベントに登録します 2.) 各顧客には、登録したイベントに連れて行くことができるゲストがいます (たとえば、イベント 1 に登録しており、数量が 3 の場合、顧客は 2 を割り当てることができます)それにゲスト)

私は単純なシナリオを使用してこれを試しました。このシナリオでは、多対多のゲストとイベントの関係を作成しましたが、正常に動作し、events.guests ナビゲーション プロパティを使用してゲストをイベントに追加できます。

しかし、私はそれを顧客と連携させる必要があります。頭を悩ませているのですが、顧客はこのモデルのどこに当てはまりますか?

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; }
}

これにより、GuestId、EventId を持つマッピング テーブル GuestEvent が生成されます。

私が理解していることから、顧客エンティティcustomerId、EventId、GuestIdが追加されたマッピングテーブルは次のようになりますが、どのように設定すればよいですか?

4

2 に答える 2

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; }
}
于 2012-04-25T21:06:04.550 に答える
0

次のようなものが機能するはずです: これは、Customer と Event の関係が 1:1 であり、すべての Name 情報が Guest オブジェクトにあると仮定しています...

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; }
}
于 2012-04-25T21:04:57.523 に答える