我使用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