通过LINQ编辑WCF数据服务的数据

时间:2011-08-17 08:20:26

标签: wcf linq entity-framework-4 wcf-data-services

我已经创建了一个小型WCF数据服务,我可以毫无问题地添加/检索数据。

我在这个“家庭”系列上有一套,拥有所有权利:

config.SetEntitySetAccessRule("HouseHold", EntitySetRights.All);

问题在于我无法编辑:

HouseHold houseHold = entities.HouseHold.Where(h => h.IDHouseHold == varContainingAnExistingId).FirstOrDefault();
houseHold.LastName = "LastName" + DateTime.Now;
entities.SaveChanges();

我没有任何异常,我的数据在数据库中没有更新。

我错过了什么?我应该做些什么来保存我的更改?

(我的断点在entities.SaveChanges()上停止,所以我完全确定它会运行)

非常感谢

编辑,我刚看到我的DataServiceContext的APPLICATIONChanges设置为false,但它不是我可以编辑的属性,是否有我的问题的链接?

2 个答案:

答案 0 :(得分:2)

我终于通过探索上下文的方法找到了解决方案:

使用wcf数据服务没有更改跟踪,您必须指定该对象已更改。只有在修改时才会出现此问题,因为在添加/删除时我们必须调用自动放置更改标志的特殊方法。

因此,在我的示例中,以下代码正在运行:

HouseHold houseHold = entities.HouseHold.Where(h => h.IDHouseHold == varContainingAnExistingId).FirstOrDefault();
houseHold.LastName = "LastName" + DateTime.Now;
entities.UpdateObject(houseHold);
entities.SaveChanges();

UpdateObject 是重要的变化。

答案 1 :(得分:-1)