我發現的每篇文章都展示瞭如何使用RIA添加新項目。任何人都不會更新現有的數據?它確實不像它。MVVM Ria服務。更新現有實體
場景:
我使用從我的VM服務在我的實體拉。然後使用我的視圖中的虛擬機編輯該實體。然後我想將我的實體保存回數據庫。我不想添加它。我不想刪除它。我想更新它。我在服務器端看到了這些方法,但我所擁有的是在我的datacontext上提交更改。
我試圖克隆原來的實體,然後裝上原來的實體和當前實體複製到它
public void SaveDoctors(Doctors current, Doctors original, Action<SubmitOperation> callback)
{
var ctx = new RefereeDomainContext();
ctx.Doctors.Attach(original);
original = current;
ctx.SubmitChanges(callback,null);
}
這也不起作用。我今天已經瀏覽了10多個博客,而且我發現的任何內容都是關於添加新實體,即使他們聲稱他們會告訴你如何更新實體。
我可以很容易地將實體運送到服務器端並在那裏執行,但我不知道這是正確的形式。
哪裏是更新實體的適當位置?我正在使用SL5,我不知道如何告訴你我正在使用的RIA服務的版本。
澄清
我檢索使用我的視圖模型服務呼叫我的實體:
Doctors doctors = GetService<IDoctors>.GetDoctor().FirstorDefault(d=>d.id=xxxx);
我把醫生實體到我的虛擬機結構:
DoctorsVM=new DoctorsVM(doctors);
該持有參考通過視圖模型的屬性進行編輯的醫生。任何子項都填充到子對象的ObservableCollections中。
當我與這個特定的實體完成,我準備將它保存:
GetService.UpdateCurrentDoctor(DoctorsVM.Doctor)//引用原始實體。
這是我失去它的地方。如果我這樣做:我的方法中它不工作
var ctx=new DataContext;
ctx.Attach(currentDoctor);//attaches as unmodified
ctx.Add(currentDoctor);//creates a new Entity. Dont want that.
ctx.AttachAsModified僅是在服務器端使用。 ctx.UpdateDoctors僅在服務器端可用。
這是我迷路的地方。
我來自WPF /桌面背景,所以也許我只是迷失在整個異步景觀。而且我只需要一個正確的方向。
但問題是我一收到信息就不編輯信息。我把它帶進去,將它返回給客戶端,導致它分離。客戶端操作它,然後重新附加它到域服務。但客戶方面的附加條款未加修改。 – ecathell 2013-03-18 11:26:49
從您的標題問題「MVVM Ria服務。更新現有實體」我不明白這一點。你的意思是你不改變一個領域,但它似乎改變了服務器?你跟蹤ChangeSet變量嗎?除此之外,如果您不更改某些內容,則可能會調用拒絕而不是提交。 – 2013-03-18 11:48:03
虐待編輯我的問題,使盡量使它更清晰。但是,是的,我正在改變實體。但是當它不再附加到datacontext時,我正在更改它,因爲它從檢索實體的服務中跨越到用於獲取它的viewmodel。 – ecathell 2013-03-18 12:26:48