簡體   English   中英

僅使用實體框架和RIA服務更新已修改的列

[英]Update modified columns only, with Entity Framework and RIA services

我使用的是Entity Framework,該客戶端帶有使用RIA Services連接到數據庫的客戶端。 每當從客戶端保存一些內容時,受影響行中的所有列都會更新。

這是故意行為,還是我可以某種方式強制通過RIA域服務傳播的變更集僅更新實際更改的列?

在您的Update<T>方法中,您將必須執行以下操作...

您將必須對每個Update方法執行此操作,並且需要基於該特定對象的主鍵獲取dbOriginal。

// change state of entity as Unmodified/Unchanged...
original.EntityState = Unchanged;

// this is copy form database...
// Use different context
MyOrderContext context = new MyOrderContext();
Order dbOriginal = context.Orders.First( x=>x.OrderID == original.OrderID);

foreach(PropertyInfo p in copy.GetTypes().GetProperties()){
   Object originalValue = p.GetValue(dbOriginal);
   Object newValue = p.GetValue(original);
   if(originalValue!=null && newValue!=null 
       && originalValue.Equals(newValue)){
       continue;
   }
   // resetting this will 
   // make entity's only current
   // property as changed
   p.SetValue(original,originalValue);
   p.SetValue(original,newValue);
}

RIA服務(以及與此相關的實體框架)中的轉移/更改單位是實體。

您為什么只想在大多數情況下都使用SQL在業務應用程序中寫入整行時更新那些會更改的列? 通常只需要更新一行的特定列就需要更多的處理能力/代碼/時間。

如果您想要更細粒度的內容,則需要為每行的每個屬性創建實體,但是我需要一個非常字符串化的理由來做到這一點。 你能闡明你的目標嗎?

暫無
暫無

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

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