【发布时间】:2017-04-18 09:53:54
【问题描述】:
我有一个ScheduleItem 类型的对象
public class ScheduleItem : EntityBase
{
[MaxLength(500)]
[Required]
public string TitleAr { get; set; }
[MaxLength(300)]
[Required]
public string TitleEn { get; set; }
public int? ParentScheduleItemId { get; set; }
public int? PreviousDestinationId { get; set; }
public int? NextDestinationId { get; set; }
public ScheduleItem ParentScheduleItem { get; set; }
[InverseProperty("ParentScheduleItem")]
public ICollection<ScheduleItem> ChildrenScheduleItems { set; get; }
public ScheduleItem PreviousDestination { get; set; }
public ScheduleItem NextDestination { get; set; }
}
这个对象是父对象,里面有一个子对象的集合。
每个孩子都有一个对下一个孩子的可选引用(最后一个孩子的 NextDestinationId = null)和一个对前一个孩子的可选引用(第一个孩子的 PreviousDestinationId 应该为 null)。
模型生成器代码:
modelBuilder.Entity<ScheduleItem>().HasOptional(t => t.NextDestination).WithMany().HasForeignKey(t => t.NextDestinationId);
modelBuilder.Entity<ScheduleItem>().HasOptional(t => t.PreviousDestination).WithMany().HasForeignKey(t => t.PreviousDestinationId);
但是,保存时出现此错误 无法确定相关操作的有效顺序。由于外键约束、模型要求或存储生成的值,可能存在依赖关系。
解决这个问题的方法是什么?我需要打两次SaveChanges()吗?
【问题讨论】:
-
How to map recursive relation on self in Entity Framework code-first approach@OP 的可能重复项:检查此答案。恕我直言,这是完美的解决方案
标签: c# sql entity-framework ef-model-builder