2014-05-25 5 views
1

Je développe une bibliothèque .NET Framework 4.5 avec C# et Entity Framework 6.1 Code First.Est-ce une relation plusieurs-à-plusieurs?

J'ai ces deux classes:

public class User 
{ 
    public int UserId { get; set; } 
    public string UserName { get; set; } 

    public ICollection<Group> Groups { get; set; } 

    public ICollection<Message> MessagesSent { get; set; } 
    public ICollection<Message> MessagesReceived { get; set; } 
} 

public class Message 
{ 
    public int MessageId { get; set; } 
    public string Body { get; set; } 
    public DateTime DateSent { get; set; } 

    public User Sender { get; set; } 
    public ICollection<User> Recipients { get; set; } 
} 

Comment puis-je faire pour générer la table du bénéficiaire?

enter image description here

J'utilise l'API Fluent et j'ai deux classes:

public class MessageConfiguration : EntityTypeConfiguration<Message>

ET

public class UserConfiguration : EntityTypeConfiguration<User>

Mais je pas ce que je dois faire pour générer la table Recipient.

Je suis en train de représenter ceci:

  • Un message peut être envoyé à un ou plusieurs destinataires.
  • Un utilisateur (destinataire) peut recevoir zéro ou plusieurs messages (mais il ne peut recevoir un message qu'une seule fois).

La conception de ma base de données est-elle correcte?

Répondre

1

Essayez ceci:

public class MessageConfiguration : EntityTypeConfiguration<Message> 
{ 
    public MessageConfiguration() 
    { 
     this.HasMany(x => x.Recipients) 
      .WithMany(x => x.MessagesReceived) 
      .Map(x => x.ToTable("MessageRecipients") 
         .MapLeftKey("MessageId") 
         .MapRightKey("UserId")); 
    } 
} 

(S'il vous plaît noter que je mets le nom de la table à MessageRecipients au lieu de Recipients)

+0

Merci pour votre réponse. Ma conception de base de données a également supporté qu'un message peut avoir un seul destinataire. Je pense que oui, mais vous avez utilisé 'HasMany' et' WithMany'. Si je n'ai qu'un seul destinataire et qu'un seul message, est-ce un problème? Je ne le pense pas, mais c'est mon doute. Merci. – VansFannel

+0

Si chaque message n'a qu'un seul destinataire, pourquoi 'Message.Recipients' est-il une collection? – haim770

+0

Parce qu'un message peut avoir un ou plusieurs destinataires. Comme un groupe Whatsapp où vous avez envoyé un message à un groupe et chaque membre recevra ce message. – VansFannel