繁体   English   中英

这是多对多关系吗?

[英]Is this a many-to-many relationship?

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

如何生成收件人表?

在此处输入图片说明

我正在使用Fluent API,并且有两个类:

public class MessageConfiguration : EntityTypeConfiguration<Message>

public class UserConfiguration : EntityTypeConfiguration<User>

但是我不需要生成Recipient表。

我试图代表这个:

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

我的数据库设计正确吗?

尝试这个:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM