我在代码优先EF6中有一个类(简化)。
public class Transaction
{
public int Id { get; set; }
public int? TransferCounterPartId { get; set; }
public Transaction TransferCounterPart { get; set; }
public bool IsTransfer{get{return TransferCounterPart != null;}}
}
我将此描述为循环自引用。我没有添加任何流畅的API,但尝试了不同的方案来解决我的问题。
我的问题是删除这些实体,或者说是构成转移交易的那对实体。
我的删除声明:
Manager.Context.Transactions.Remove(transaction.TransferCounterpart);
Manager.Context.Transactions.Remove(transaction);
例外:
无法确定相关操作的有效排序。 由于外键约束,模型可能存在依赖关系 要求或商店生成的值。
如果我将对彼此的引用设置为null,SaveChanges,然后再次删除实体和SaveChanges,它会毫无障碍地进行,但这会影响性能和设计。
问题: 如何删除这两个实体?
解决方案方向我可以成像:
欢迎任何帮助
psuedo-code modelbuilder.Entity.HasOptional.HasRequired.WillCascasde(true / false)场景不起作用。