我发现的每篇文章都展示了如何使用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