[英]Delete child objects
我正在嘗試更新資源,如下所示:
public void Update(Resource resource) {
Resource _resource = _resourceRepository.First(r => r.Id == resource.Id);
_resource.Content = resource.Content;
_resource.Description = resource.Description;
_resource.Locked = resource.Locked;
_resource.Name = resource.Name;
_resource.Restrictions.ToList().ForEach(r => _resource.Restrictions.Remove(r));
foreach (Restriction restriction in resource.Restrictions)
_resource.Restrictions.Add(new Restriction { Property = _propertyRepository.First(p => p.Id == restriction.Property.Id), Value = restriction.Value });
} // Update
我有類似的東西,並且正在努力創建只有一個區別的資源:我不刪除限制。
我收到以下錯誤:
“ Restrictions_ResourceId_FK” AssociationSet中的關系處於“已刪除”狀態。 給定多重性約束,相應的“約束”也必須處於“已刪除”狀態。
我想念什么?
EF完全按照您的要求去做。 從父對象導航集合中刪除項目只會刪除父對象和子對象之間的關系。 這意味着它僅將Restriction中的ResourceId設置為null,這是您的實體模型不允許的。
如果沒有相關資源就無法存在限制,則應將“關系”建模為“識別”。 這意味着限制主鍵還將包含ResourceId列。 當您從父對象集合中刪除限制時,EF將刪除限制,而不是將ResourceId設置為null。
我遇到了類似的問題,因為Add()的反面似乎是Remove()。
您必須使用DeleteObject()函數來刪除子項。
謝謝。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.