2011-05-10 124 views
2

我正尝试使用WCF数据服务,并且我对基于关键字段值尝试更新记录时出现错误的地方有点困惑。
我简单的方法,它不工作:使用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

我找到了问题的原因。这是微不足道的(我觉得自己像一个白痴),在服务初始化器中没有设置写权限。有以下几点:

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

后,我把它改为:

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

都开始按预期运行。 而且,当然,我设置的这样一个广泛的访问规则仅用于测试目的。之后它应该受到限制。

0

在您的OnChangesSaved处理程序中,您需要拨打context.EndSaveChanges(result)

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

+0

谢谢。我试过了,但问题是,当试图调用它时,我得到一个运行时错误:'处理此请求时发生错误.' – rem 2011-05-10 14:31:19