2015-01-30 13 views
0

Silverlight 4 및 DevForce 6.1.11.0을 사용하고 있습니다.왜이 EntityManagerSaveException가 발생합니까?

EntityAspect를 구현하는 일부 POCO 클래스가 있습니다.

변경 사항이 EntityManager.SaveChanges를 통해 저장되면; DevForce는 이러한 POCO 엔티티가 EF의 일부가 아니기 때문에 이러한 POCO 엔티티를 서버에 저장하지 않습니다.

대신 WebClient.UploadStringAsync를 통해 웹 서비스로 보냅니다.

동일한 형식의 엔티티를 두 개 이상 저장할 때 예상됩니다.

EntityManagerSaveException : PocoMyClass :이 키와 엔티티 그 때 나는이 예외 얻을 0,0 이미 내가 캐시를 검사 한이 위해 entityManager

존재를, 어떤 기업은 그와 함께 없다 키.

WebClient.UploadStringAsync는 여전히 데이터를 보내고 모든 것이 저장되지만 예외는 고객에게 좋지 않습니다.

이 예외를 해결하려면 어떻게해야합니까?

+0

어떤 PocoSaveMode 설정을 사용하고 있습니까? DevForce에 필요한 것이 없다면 http://drc.ideablade.com/devforce-2012/bin/view/Documentation/poco-save-mechanisms를 검토하십시오. –

+0

PocoSaveMode를 설정하지 않습니다. 특정 poco 유형에 사용되는 DevForce 서버에 PocoSaveAdapter와 PocoServiceProvider가 있습니다. 문제가있는 poco 유형은 DevForce 서버로 이동하지 않아야합니다. DevForce 서버에 대한 왕복이 이러한 poco 유형에 대한 예외를 유발합니까? –

답변

0

문제가있는 poco 엔티티는 DevForce 서버가 아닌 클라이언트에만 있어야합니다. 그 이유는 클라이언트 만 로컬 네트워크에서 액세스 할 수 있기 때문입니다.

그래서 WebClient.OpenReadAsync를 사용하여 데이터를 읽고 클라이언트에서 poco 엔티티를 만듭니다. 그리고 나서 poco 엔티티를 저장할 때 WebClient.UploadStringAsync를 사용합니다.

마시고 엔티티를 생성하고의 EntityManager에 추가

, I는 다음과 같이 수행

var pocoEntity = new PocoMyClass(); 
pocoEntity.keyId = some integer; 
… 
entityManager.AddEntity(pocoEntity); 
pocoEntity.EntityAspect.AcceptChanges(); 

이 일 후에 내가 마시고 엔티티의 EntityVersion.Original에 대한 속성 만 (NULL을 빈 물건을 포함 참조 0과 0).

저장시 예외 이유가 있습니까?

엔터티가 DevForce 서버에서 제공되지 않은 경우 어떻게 EntityVersion.Original을 조작 할 수 있습니까?

+0

이론적으로 DevForce는 Unchanged 엔티티 상태의 엔티티를 서버로 보내지 않아야하지만 DF는 다양한 캐시 복제/처리를 수행하며 저장 결과를 복제하거나 EM에 후 처리 할 때 오류가 발생할 가능성이 있습니다 은닉처. 문제를 정확하게 지적하는 데 도움이되는 스택 추적 (내부 예외 정보 포함)을 얻을 수 있다면. 그렇지 않은 경우 라이센스가있는 DevForce 고객 인 경우, 작은 복제 표본을 IdeaBlade 지원에 보낼 수 있습니다. –

+0

요점은 이러한 엔티티가 변경되었지만 서버를 가져 오기 위해 다시 전송하지 않기를 바랍니다. –

+0

EM 캐시의 변경된 엔티티가 자동으로 서버로 전송됩니다.이를 방지하기 위해 다른 EM에 저장해야하는 변경 사항 만 가져 와서 해당 EM에서 저장을 호출 할 수 있습니다. –