2012-10-30 5 views
0

SOA 아키텍처에서 작업하고 있습니다. 그래서 나는 데이터베이스에 접근 할 수 없다. 엔티티로 서버에서 DTO를 사용합니다. 클라이언트의 엔티티를 채우고 서버에 제출하면 기본 키가 엔티티에 대해 생성됩니다.제출 SubmitChanges()에 삽입 할 때 서버가있는 엔터티가 클라이언트로 다시 변경되었습니다.

그리고 내가 사용 (클라이언트 사이드)

_customerDomainContext.SubmitChanges (SubmitChangesCallback, NULL); 난, 난 단지 내가 채워 속성을 볼 수있는 새로 추가, 엔티티를 액세스하려고 콜백에서

.

나는 아래 표와 같은 도메인 서비스 (서버 사이드)에 submited 개체에 액세스 할 수 .

[Insert] 
    public void InsertCustomerDTO(CustomerDTO customer) 
    { 
     CustomerDTO customerFromDB = CreateCustomerDTOCore(customer); 
    } 

이 내가 SubmitChanges에 기업의 새로 생성 된 키에 액세스 할 수 있도록 내가 클라이언트에 새로 생성 된 엔터티를 얻을 수있는 방법입니다.

아무런 제안이 있으면 감사드립니다. 당신이 실제 키 값을 찾을 수 귀하의 키 필드에 있도록

context.SubmitChanges(x => 
      { 
       //Contains your entities fulfilled by the server 
       x.ChangeSet 
      }, null); 

그것은 네 저장 한 후 서버에 의해 반환 된 엔티티를 포함

답변

1

는 단순히 콜백의 인수를 사용합니다.
위의 프로세스를 실행하려면 엔티티를 "편집"해야한다는 것이 명확하지 않을 수 있습니다.

[Insert] 
public void InsertJeopardyModel(CustomerDTO jeopardy) 
{ 
    CustomerDTO customerFromDB = CreateCustomerDTOCore(customer); 
    jeopardy.Id = customerFromDB.Id; 
    jeopardy.MyProperty = customerFromDB.MyDBEquivalentProperty; 
} 

당신은 내가 실제로 단지 Enitity 프레임 워크 또는 LINQ2SQL 않는처럼 CustomerDTO 개체를 편집하고있어 편집 된 샘플에서 볼 수 있듯이.
그런 다음 편집 된 엔터티는 Changeset 속성에 노출 될 클라이언트에 직렬화됩니다.

+0

이 옵션을 시도했지만 변경 집합은 클라이언트에서 보낸 값만 반환합니다. Incase EntityFramework를 사용하고 있다면, ID를 가져 오지만 POCO 객체를 사용합니다. – crazy9

+0

이는 매개 변수로 전달 된 항목을 변경하지 않았기 때문일 수 있습니다. 나는 서버 측 방법으로 나의 대답을 개선했다. – mCasamento

+0

그것은 효과가 있었다. 고마워, 너는 내 하루를 구했다. – crazy9