我有2个实体。用户和消息。消息具有发件人和收件人。两者都是用户。 我想在User上为" SentMessages"公开导航属性。 && 34; ReceivedMessages"。需要什么Fluent配置来定义它?我尝试过多种组合并继续遇到异常:
介绍FOREIGN KEY约束' FK_dbo.Message_dbo.User_Recipient_Id'在桌子上'消息'可能会导致循环或多个级联路径。指定ON DELETE NO ACTION或ON UPDATE NO ACTION,或修改其他FOREIGN KEY约束。
我的实体看起来像:
public class User{
public int Id {get;set;}
public virtual IEnumerable<Message> SentMessages {get;set;}
public virtual IEnumerable<Message> ReceivedMessages {get;set;}
}
public class Message{
public int Id {get;set;}
public string Content {get;set;}
public virtual User Sender{get;set;}
public virtual User Recipient{get;set;}
}
答案 0 :(得分:0)
您需要通过Fluent API禁用级联删除。 您可以在上下文类中执行此操作:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Message>()
.HasRequired(a => a.Sender)
.WithMany()
.HasForeignKey(u => u.Sender).WillCascadeOnDelete(false);
modelBuilder.Entity<Message>()
.HasRequired(a => a.Recipient)
.WithMany()
.HasForeignKey(u => u.Recipient).WillCascadeOnDelete(false);
}