2011-05-10 92 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