在这种情况下,我将对服务使用调用操作。这样,您只需调用该方法,而无需事先将任何实体加载到客户端。
为此,首先在您的服务上创建一个调用操作
[EnableClientAccess]
public class MyDomainService : DomainService
{
[Invoke(HasSideEffects = true)]
public void UpdateCol3OfAllEntities()
{
// Use you data access layer to perform the neccessary
// query: "UPDATE MyTab SET col3 = 'X'"...
}
}
您甚至可以通过将 id 传递给它来扩展该方法:
[Invoke(HasSideEffects = true)]
public void UpdateCol3OfAllEntitiesWithIds(int[] ids)
{
// Use you data access layer to perform the neccessary
// query: "UPDATE MyTab SET col3 = 'X' WHERE id IN (...)"...
}
然后只需在客户端调用它:
var context = new MyDomainContext();
context.UpdateCol3OfAllEntities(operation =>
{
if (operation.HasError)
{
// If in trouble or in doubt, run in circles, scream and shout!
operation.MarkErrorAsHandled();
}
else
{
// Rejoice, for the operation succeeded!
}
}, null);
请注意,该操作用 修饰InvokeAttribute
,它已将其HasSideEffects
-parameter 设置为true
。这表明通过调用此方法,您实际上更改了相关数据的某些内容。有关该主题的更多详细信息,请参阅 MSDN: