我使用LinqToEntitiesDomainService類來更新Silverlight 4客戶端的數據庫。 還有的AttachAsModified爲實體框架ObjectContext的擴展方法,它允許您提供原始的實體屬性值:WCF RIA Services SP1,實體框架4,僅更新更改的列
Order original = this.ChangeSet.GetOriginal(currentOrder);
this.ObjectContext.Orders.AttachAsModified(currentOrder, original);
默認情況下,WCF RIA服務不發送原始值到服務器,所以人們需要 應用[RoundtripOriginal( )]屬性給他/她的實體。
但是,即使我提供原始值,由Entity框架生成的SQL更新所有列,不僅更改了所有列。由於AttachAsModified()方法不是本地ObjectContext類方法(它是在ObjectContextExtensions類中定義的擴展方法),因此我嘗試使用在ObjectSet類中定義的ApplyOriginalValues方法 。不用找了。 看來最近發佈的實體框架4.1可能有解決方案(不確定)。實體框架4如何? EF有可能生成sql來只更新更改的列嗎?
謝謝,我想標記你的答案也是正確的; SO不允許2個答案是正確的。 – synergetic 2011-06-14 00:06:52
大多數歡迎和沒有問題,@阿卡什的代碼示例確實比我的MSDN報價更容易。 =) – Smudge202 2011-06-14 08:10:10