var entitys= Repository.Table.Where(a => ids.Contains(a.UUID)).ToList();
entitys.ForEach(a =>
{
//foreach (var deductionitem in a.Deductionitems){} //取出來就洗掉不了了
var items=a.Deductionitems
DoDelete(a);
});
DeductionItems和主表配了級聯洗掉,代碼執行時會拋The relationship could not be changed because one or more of the foreign-key properties is non-nullable
場景為:洗掉主表時,在其對應的子表集合中,從子表通過導航屬性去更新另外一個表的某個合計欄位
解決方法:
遍歷子表后,EF無法分辨該記錄是否要保留,所以需要手動洗掉從表,不能再依賴級聯洗掉
附上主表物體部分欄位
public class MaterialSupplierPayApply : BaseSupplierPayApply
{
public MaterialSupplierPayApply() { }
public MaterialSupplierPayApply(Currency currency, decimal exchangeRate, MaterialSupplier supplier)
: base(currency, exchangeRate, supplier)
{
}
public override string SysBillTypeCode => FuncCodeConst.Scm.MATERIALSUPPLIERPAYAPPLY;
private List<MaterialSupplierPayDeductionItem> _deductionItems;
/// <summary>
/// 應付扣款明細
/// </summary>
public virtual List<MaterialSupplierPayDeductionItem> DeductionItems
{
get => _deductionItems ?? (_deductionItems = new List<MaterialSupplierPayDeductionItem>());
set => _deductionItems = value;
}
}
以下為子表物體
/// <summary> /// 應付扣款明細 /// </summary>
public class MaterialSupplierPayDeductionItem:BaseEntityLog
{
public MaterialSupplierPayDeductionItem() { }
public MaterialSupplierPayDeductionItem(MaterialSupplierPayableDeduction materialSupplierPayableDeduction,Guid billId)
{
BillId = billId;
materialSupplierPayableDeduction.WriteOffStatus = WriteOffStatus.WriteOffing;
MaterialSupplierPayableDeduction = materialSupplierPayableDeduction;
}
/// <summary>
/// 付款申請
/// </summary>
public Guid BillId { get; set; }
/// <summary>
/// 材料商應付扣款Id
/// </summary>
public Guid MaterialSupplierPayableDeductionId { get; set; }
/// <summary>
/// 備注
/// </summary>
public string Description { get; set; }
#region 導航屬性
/// <summary>
/// 材料商付款申請
/// </summary>
public virtual MaterialSupplierPayApply MaterialSupplierPayApply { get; set; }
/// <summary>
/// 材料商應付扣款
/// </summary>
public virtual MaterialSupplierPayableDeduction MaterialSupplierPayableDeduction { get; set; }
#endregion
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/1657.html
上一篇:演算法題(動態規劃)
下一篇:EF中獲取當前背景關系的表名
