gpt4 book ai didi

c# - 是否可以在不首先执行查询的情况下更新 WCF 数据服务 (oData) 实体?

转载 作者:行者123 更新时间:2023-11-30 15:37:55 25 4
gpt4 key购买 nike

我一直在为这个问题绞尽脑汁,也许我没有看错。

我有一个服务器端架构,看起来像这样SQL Server --> EF --> WCF 数据服务 (oData)

有没有一种方法可以在不首先查询服务器的情况下更新服务器端实体。

从我阅读的所有文档来看,似乎需要查询才能将实体添加到上下文中以进行跟踪。跟踪后,可以对实体进行更改,然后可以调用 BeginSaveChanges 来执行更新。

我正在从 Windows Phone 应用程序访问我的 oData 服务,我在其中将服务器实体(及其 ID)作为 POCO 对象存储在隔离存储中。我不存储从 WCF 代理客户端创建的 DTO。

我不想先查询实体,以节省带宽。

最佳答案

是的,您需要创建一个虚拟实体,然后附加并保存它。

例如

using(var ctx = new MyContext())
{
var dummyEntity = new MyEntity{ Id = 1 };
ctx.MyEntities.Attach(dummyEntity); // EF now knows you have an entity with ID 1 in your db but none of its properties have changed yet
dummyEntity.SomeProperty = 1; //the change to SomeProperty is now tracked
ctx.SaveChanges();// a single update is called to set entity with Id 1's 'SomeProperty' to 1
}

然而,这有一些问题,如果您有任何其他具有相同 ID 的实体附加到您的上下文,附加将失败。因此,在执行此类操作时,最好将上下文范围保持在非常小的范围内。

关于c# - 是否可以在不首先执行查询的情况下更新 WCF 数据服务 (oData) 实体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12043864/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com