내가 찾은 모든 기사는 RIA를 사용하여 새 항목을 추가하는 방법을 보여줍니다. 아무도 기존 데이터를 업데이트하지 않습니까? 확실히 doesnt는 그것을 좋아하는 것처럼 보인다.MVVM Ria Services. 기존 엔티티 업데이트
시나리오 :
내가 내 법인에서 끌어 내 VM에서 서비스를 사용하고 있습니다. 엔티티는 내보기에서 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 서비스의 버전을 알려주는 방법을 모르겠습니다.
대한 설명
내가 내 뷰 모델에서 서비스 호출을 사용하여 내 개체 검색 :
DoctorsVM=new DoctorsVM(doctors);
이가 원하는 분야
Doctors doctors = GetService<IDoctors>.GetDoctor().FirstorDefault(d=>d.id=xxxx);
내가 내 VM 구조로 의사 엔티티를 밀어을 뷰 모델의 속성을 통해 편집 된 의사를 참조하십시오. 모든 하위 항목은 하위 개체의 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
당신의 질문 제목에서 "MVVM Ria Services. 기존 엔티티 업데이트"나는 그것을 이해하지 못했습니다. 필드를 변경하지 않았지만 서버에서 변경된 것 같습니다. ChangeSet 변수를 추적 했습니까? 이 항목 옆에있는 항목을 변경하지 않으면 Submit 대신 Reject를 호출 할 수 있습니다. –
병을 분명히하기 위해 내 질문을 편집하십시오. 그러나 그렇습니다, 나는 실체를 바꾸고 있습니다. 그러나 더 이상 datacontext에 연결되어 있지 않을 때 엔 그것을 변경하고 있습니다. 왜냐하면 그것을 얻는 데 사용되는 뷰 모델로 엔티티를 검색하는 서비스에서 벗어 났기 때문입니다. – ecathell