EF4 프로젝트를 도메인으로 사용하는 MVC3 프로젝트가 있습니다. 도메인은 T4를 사용하여 POCO 개체를 만드는 모델 첫 번째 프로젝트입니다. 도메인에 여러 ComplexType이 있습니다. context.CreateObject()에서 반환 한 프록시를 사용하는 한 모든 것이 훌륭하게 작동합니다.현재 값을 POCO에서 DynamicProxy에 적용하면 복잡한 개체에 오류가 발생합니다.
MVC3 동작이 호출되면 모델 바인더는 도메인에 적용될 변경 사항이 포함 된 프록시가 아닌 개체를 전달합니다.
"proxy'ed"원본을 사용하여 나중에 뷰가 탐색 속성에 액세스 할 수 있도록하고 싶습니다. 따라서 직선적 인 AttachTo가이를 잘라 내지 않습니다.
먼저 "원래"proxy'ed 개체를 컨텍스트에서 가져온 다음 모델 바인더에서 제공 한 POCO에 포함 된 변경 내용으로 업데이트해야합니다.
[InvalidOperationException: The entity of type 'System.Data.Entity.DynamicProxies.Value_E954C24C522BA1D4124F434A57391656EFA4DD7CEFFD3A5CE35FC1532CD1B10A' references the same complex object of type 'Domain.DateRange' more than once. Complex objects cannot be referenced multiple times by the same entity.]
System.Data.Objects.EntityEntry.CheckForDuplicateComplexObjects(Object complexObject) +418
System.Data.Objects.EntityEntry.DetectChangesInProperties(Boolean detectOnlyComplexProperties) +211
System.Data.Objects.Internal.EntityWithChangeTrackerStrategy.UpdateCurrentValueRecord(Object value, EntityEntry entry) +93
System.Data.Objects.Internal.EntityWrapper`1.UpdateCurrentValueRecord(Object value, EntityEntry entry) +17
System.Data.Objects.EntityEntry.ApplyCurrentValuesInternal(IEntityWrapper wrappedCurrentEntity) +107
System.Data.Objects.ObjectContext.ApplyCurrentValues(String entitySetName, TEntity currentEntity) +365
-
: 내 문제는이 오류가
public static T GetUpdatedProxy<T>(this ObjectContext context, string entitySetName, T entity)
where T : class
{
object original; // db original POCO, proxy wrapped.
var entityKey = context.CreateEntityKey(entitySetName, entity);
//Load DB object
context.GetObjectByKey(entityKey, out original)
//Apply changes from binder supplied POCO object.
context.ApplyCurrentValues<T>(entitySetName, entity); //<= error here
return (T) original;
}
:
내가 읽은, 나의 연구는 나에게 말한다 것과, 나는 다음과 같은 사용하여이 일을 수행 할 수 있어야한다
의견이 있으십니까? 도움에 감사드립니다.