簡體   English   中英

刪除子對象

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM