我发现的每一篇文章都展示了如何使用 RIA 添加新项目。没有人更新现有数据吗?它肯定看起来不像。
设想:
我正在使用我的虚拟机中的服务来拉入我的实体。然后在我看来使用虚拟机编辑实体。然后我想将我的实体保存回数据库。我不想添加它。我不想删除它。我想更新它。我在服务器端看到了该方法,但我所拥有的只是在我的数据上下文上提交更改。
我试图克隆原始实体,然后附加原始实体并将当前实体复制到它上面
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);
我将医生实体推送到我的 VM 结构中:
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/桌面背景,所以也许我只是迷失在整个异步环境中。我只需要朝着正确的方向前进。