2014-05-25 28 views
1

我正在用C#和Entity Framework 6.1 Code First開發.NET Framework 4.5庫。這是一個多對多的關係嗎?

我有以下兩類:

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

我該怎麼做才能生成收件人表?

enter image description here

我用流利的API和我有兩個類:

public class MessageConfiguration : EntityTypeConfiguration<Message>

public class UserConfiguration : EntityTypeConfiguration<User>

但我沒有什麼,我必須做生成Recipient表。

我試圖來表示:

  • 可以將消息發送給一個或多個收件人。
  • 用戶(收件人)可以收到零個或多個消息(但他/她只能收到一條消息 )。

我的數據庫設計是否正確?

回答

1

試試這個:

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

(請注意,我設置的表名MessageRecipients而不是Recipients

+0

謝謝您的回答。我的數據庫設計也支持一條消息只能有一個收件人。我認爲它確實如此,但是你已經使用了'HasMany'和'WithMany'。如果我只有一個收件人並且只有一封郵件,是否有問題?我不這麼認爲,但這是我的疑問。謝謝。 – VansFannel

+0

如果每封郵件只有一個收件人,爲什麼'Message.Recipients'是一個集合? – haim770

+0

因爲消息可能有一個或多個收件人。就像一個Whatsapp羣組,您向羣組發送郵件,每個成員都會收到該郵件。 – VansFannel