2012-04-25 3 views
0

Я видел несколько примеров многих и многих отношений в EF с использованием кода, но я столкнулся с ситуацией, в которой я не уверен, как ее решить.моделирование взаимоотношений клиент, конференция, гость

Am пытается смоделировать этот сценарий

субъекты являются клиентами, Гость, событие 1.) клиент регистрируется для событий 2.) каждый клиент имеет гостей, что он может принести в случае, если он зарегистрирован на (например, если он зарегистрировался на событие 1, а количество равно 3, он может назначить 2 гостей)

Я попробовал это, используя простой сценарий, в котором я сделал много-много отношений с ч/б гостей и событий, и он работает штраф, , и я могу добавлять гостей к событиям, используя события. navigation navigation property

Но мне нужно, чтобы это работало с клиентами, я с трудом обволакиваю голову вокруг него, где бы клиент вписывался в эту модель?

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

Это создает отображение таблицы GuestEvent, которая имеет GuestId, 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

yes thats correct, клиент может иметь несколько регистраций одновременно – 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 Можете ли вы сказать мне, помог ли мой ответ, и если бы это было сделано, можете ли вы пометить его как принятое? –

Смежные вопросы