ADO.NET数据服务不会更新

时间:2010-07-22 10:06:13

标签: asp.net .net-4.0 wcf-data-services

使用ADO.NET数据服务更新对象时遇到问题。

首先,我创建了一个可以加载和存储数据的服务。它是一个实现IUpdatable接口的基本数据上下文。

之后,我创建了一个简单的服务客户端。我刚刚在Visual Studio中使用“添加服务”引用创建了它。基本上这个服务接缝工作。我可以查询对象并存储新对象。但是我无法更新对象。

这是我在客户端的更新代码:

        var ctx =
            new TeamDataContext(new Uri("http://localhost:8637/TeamInfoService.svc"));
        var team = ctx.Teams.First();
        team.TeamName = "New Team Name";
        ctx.UpdateObject(team);

        ctx.SaveChanges();

我的主要问题是,没有为我想要更新的对象调用IUpdatable.SetValue()。只调用IUpdatable.SaveChanges()而不更新服务器上的对象。

当我创建一个新对象时,在服务器上调用IUpdatable.SetValue来设置属性。

那么我做错了什么?我的期望是错的吗?是否应该在更新对象时调用IUpdatable.SetValue?或者我是否需要做更多其他事情来进行更新?

编辑:我刚看了客户端和服务器之间的HTTP请求。客户端发送带有更改的HTTP-Merge请求。但是我仍然不知道为什么没有存储更改。

1 个答案:

答案 0 :(得分:1)

我刚刚发现了这个问题,现在觉得自己像个白痴。 TeamName属性是对象的Key。当然,当你更改密钥时,它实际上找不到要更新的对象了。因此它无法更新财产。

所以,永远不要尝试更新对象的键=)