在EF核心2中映射两个可以为空的外键

时间:2018-06-12 10:55:17

标签: c# entity-framework-core ef-fluent-api

我有一个消息模型,它有两个像这样的用户的外键

[Table("Messages")]
public class Message
{
    public Message()
    {
        MessageReaders = new HashSet<MessageReader>();
    }

    [Key]
    public int MessageId { get; set; }

    public int? SenderUserId { get; set; }
    public int? ReceiverUserID { get; set; }

    public virtual SystemUser Sender { get; set; }
    public virtual SystemUser Reciever { get; set; }

}

认为发送方和接收方都是外键,两者都是空的。如何在EF核心2中进行流畅的映射。

我试过这个但是没有用:

modelBuilder.Entity<Message>(entity => {

                entity.HasOne(d => d.Sender)
               .WithMany(p => p.Messages)
               .HasForeignKey(d => d.SenderUserId); 

                entity.HasOne(d => d.Reciever)
                .WithMany(p => p.Messages)
                .HasForeignKey(d => d.ReceiverUserID);

            });

错误是:

  

System.InvalidOperationException:&#39;无法创建关系   在SystemUser.Messages&#39;之间和&#39; Message.Reciever&#39;,因为那里   已经是SystemUser.Messages&#39;之间的关系。和   &#39; Message.Sender&#39 ;.导航属性只能参与   单身关系。&#39;

0 个答案:

没有答案