这是多对多的关系吗?

时间:2014-05-25 19:30:54

标签: c# entity-framework

我正在使用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

我使用的是Fluent API,我有两个类:

public class MessageConfiguration : EntityTypeConfiguration<Message>

public class UserConfiguration : EntityTypeConfiguration<User>

但我不知道如何生成Recipient表格。

我试图代表这一点:

  • 可以向一个或多个收件人发送邮件。
  • 用户(收件人)可以接收零个或多个消息(但他/她可以收到一个 消息只有一次)。

我的数据库设计是否正确?

1 个答案:

答案 0 :(得分: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