【发布时间】:2014-02-02 08:08:59
【问题描述】:
当有 2 个导航时,我遇到了 2 个实体之间的连接问题。
具体来说,我有以下课程:
public class TableA
{
public TableA()
{
ListBs = new List<TableB>();
}
[Key]
public int Id { get; set; }
public TableB MainB { get; set; }
public virtual ICollection<TableB> ListBs { get; set; }
}
public class TableB
{
[Key]
public int Id { get; set; }
public virtual TableA refA { get; set; }
[Required]
public string Text { get; set; }
}
这个特定类的场景反映了以下内容: TableA 有一个 TableB 对象列表 并且还有 1 个主要的 TableB 对象(当然也在列表中)。 此外,TableB 对象可能实际上没有对 TableA 的引用
抓取工作。 但是当我尝试插入新项目时,出现以下异常:
无法确定相关操作的有效顺序。由于外键约束、模型要求或存储生成的值,可能存在依赖关系。
知道我哪里做错了吗?
【问题讨论】:
-
问题不是循环引用。经过大量的摆弄和尝试,我将其范围缩小为在两个导航属性中插入一个新对象(没有 id)。
-
我使用微风,在这个问题上我能找到的唯一解决方案是保存实体两次:首先将受尊敬的实体添加到列表中并保存。然后将其设置为额外引用的项目并再次保存。
标签: c# entity-framework ef-code-first code-first