簡體   English   中英

c#僅在更改鏈接對象時更新實體框架

[英]c# Entity framework updating of linked objects only when changed

在C#實體框架中,如果我有一個與另一個類(例如Product和ProductCategory)有關系的POCO類,以便每個Product必須具有Category表中存在的類別列ID,則可以使用以下方法構造POCO類:關系良好,然后調用repository.save。 此時,如果不存在類別和產品行,則在數據庫中創建它們。

如果嘗試插入具有相同類別對象的新的第二個產品,然后嘗試再次保存該產品和類別,並且它抱怨0行已更新,因為我在類上具有[ConcurrencyCheck]屬性。

我希望它的行為如此,以便如果我保存第二個產品並且鏈接的類別對象已經存在並且沒有更改,它將只是不更新​​它,而是仍然保存產品。

這可能嗎?

例如

Category c = new Category();
Product p1 = new Product { Category = c };
repository.Insert(p1);
repository.Save();

Product p2 = new Product { Category = c };
repository.Insert(p2);
repository.Save();

第一個問題是它是斷開連接的圖,然后您必須根據情況編寫。

   DbSet.Add() will try to add all

   DbSet.Attach() will make sure context is aware of objects but state of elements will be unchanged.

   Context.Entry(entity).State=EntityState is how you can say what has been modified, added or deleted.

我希望這有幫助。

來源:(PluralSight,Julie Lerman,企業中的EF)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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