使用WCF数据服务更新数据库中的记录

时间:2011-05-10 14:05:34

标签: wcf wcf-data-services

我正在尝试使用WCF数据服务,基于关键字段值,我对尝试更新记录的错误感到困惑。
我的简化方法不起作用:

 MydbEntities context = new MydbEntities(new Uri("http://localhost:53051/Services/MydbService.svc"));
 MyEntity avt = context.MyTable.Where(p => p.EntID == "val1").FirstOrDefault();
 avt.FieldToEdit = 1;
 context.UpdateObject(avt);
 context.BeginSaveChanges(OnChangesSaved, context);
 ...
 private void OnChangesSaved(IAsyncResult result)
 {            
     MessageBox.Show("seems ok");//I'm getting this message, but, in fact, data in db remains unchanged
 }

请告诉我,我错在哪里?

2 个答案:

答案 0 :(得分:2)

我找到了问题的原因。这是微不足道的(我觉得自己像个白痴),服务初始化程序中没有设置写入访问权限。有以下内容:

public static void InitializeService(DataServiceConfiguration config)
{
    config.SetEntitySetAccessRule("*", EntitySetRights.AllRead);
      ...
}

我把它改成后:

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

所有开始按预期工作。 当然,我设置的广泛访问规则仅用于测试目的。后来它应该受到限制。

答案 1 :(得分:0)

在OnChangesSaved处理程序中,您需要调用context.EndSaveChanges(result)

这个link有一些示例代码,用于说明整个过程。