2012-07-17 3 views
4

엔티티 프레임 워크에 문제가 있습니다. 예를 들어 우리가 할 경우 :한 시간 오류로 인해 Entity 프레임 워크의 후속 사용이 중단됩니다.

modelBuilder.Conventions.Remove<OneToManyCascadeDeleteConvention>(); 

을하고 우리가에 따라 자식 개체를 매핑 한 엔티티를 삭제하려고, 우리가 오류를 얻을 논리적이다. (데이터베이스에 종속 된 하위 항목이있는 경우 상위 항목을 삭제할 수 없습니다.)

나중에 새로운 컨텍스트 인스턴스를 사용하여 'ParentEntity.ChildEntities.ToList()'를 수행하면 여전히 문제가 있습니다!

해결 방법은 응용 프로그램 풀을 다시 시작하면 문제가 해결됩니다.

우리는 Autofac을 사용하고 있으며 HttpRequest별로 컨텍스트의 수명주기가 설정되고 확인되므로 오류가 계속 발생합니다. 이러한 오류를 피하기 위해 무엇을 할 수 있습니까?

우리는 objectcontext가 다른 곳에서 영속적이며 "EntityState.Deleted"로 자식 엔티티의 상태를 저장하므로 이후 호출시 데이터베이스에서 수신 된 실제 데이터와 충돌합니다.

업데이트 : 어떻게 든 LazyInternalContext을 해제했다 아마도 경우

[DbUpdateException: An error occurred while saving entities that do not expose foreign key properties for their relationships. The EntityEntries property will return null because a single entity cannot be identified as the source of the exception. Handling of exceptions while saving can be made easier by exposing foreign key properties in your entity types. See the InnerException for details.] 
    System.Data.Entity.Internal.InternalContext.SaveChanges() +200 
    System.Data.Entity.Internal.LazyInternalContext.SaveChanges() +33 
    System.Data.Entity.DbContext.SaveChanges() +20 

: 스택이 게으른 내부 상황이 있음을 알 수의이 자세히 살펴보면처럼 보인다? 이 작업을 수행 할 수 있습니까?

+0

합니까를 ... * "의미 : 새로운 요청 (= 새 컨텍스트 인스턴스)에서? – Slauma

+0

예, 새로운 컨텍스트 인스턴스 –

+0

즉, 새 컨텍스트 인스턴스에서 부모와 자식을로드 한 다음 부모를 다시 삭제하면 동일한 오류가 발생합니다. 그렇습니까? 그렇다면 자녀를 동시에 삭제하지 말고 계단식 삭제가 관계에 대해 사용 중지 된 경우 오류는 놀라운 일이 아닙니다. – Slauma

답변

0

당신은 예외를 얻을 유효성 검사 중지하여 그렇게 할 수있는 몇 가지 이유로 자기가 유효한 상태로 데이터베이스를 유지하지 않으려면 : 이후 * "

context.Configuration.ValidateOnSaveEnabled = false; // you can put this in the constructor of your context; 
context.SaveChanges(); 
관련 문제