1

아래 메서드의 목적은 엔터티 프레임 워크를 사용하여 데이터베이스에서 데이터를 삭제하는 것입니다. 두 개의 매개 변수를 전달한 다음 atttach를 호출하고 컨텍스트 클래스의 메서드를 제거하여 구독 엔터티를 채 웁니다. 국 실체는 컨텍스트 클래스입니다.엔터티 프레임 워크를 사용하여 데이터 삭제

using (BUREAUEntities bureauEntities = new BUREAUEntities()) 
{ 
    var subscription = new SubcriptionRepository().GetSusbcriptionBySubscriptionTypeId(subscriptionTypeId, companyId); 
    bureauEntities.Subscriptions.Attach((DataAccessLayer.DatabaseModel.Subscription)subscription); 
    bureauEntities.Subscriptions.Remove(subscription); 
    bureauEntities.SaveChanges(); 
} 
내가 줄에서 IEntityChangeTracker의 여러 인스턴스에서 참조 할 수 없습니다

bureauEntities.Subscriptions.Attach((DataAccessLayer.DatabaseModel.Subscription)subscription);

누군가가 어디 잘못 갈거야 말해 수 엔티티 객체에서 다음과 같은 오류 메시지가 무엇입니까

?

답변

0

일반적으로 오류는 다른 인스턴스에서 제거하려고 할 때 BUREAUEntities 컨텍스트의 한 인스턴스에서 subscription을 검색했다는 의미입니다. 치료법은 컨텍스트를 인스턴스화하는 데 영리해야하며, 블록이 종료 되 자마자 인스턴스를 삭제하므로 using을 사용할 때 그 앞쪽으로 넘어지기 쉽습니다.

기본적으로 컨텍스트와 상호 작용할 모든 코드가 동일한 using 블록 내에 있는지 확인하십시오. 더 좋게는, Ninject 나 Unity와 같은 DI (Dependency Injection) 컨테이너를 사용하여 요청 범위의 컨텍스트를 작성하십시오. 그렇다면 동일한 문맥의 여러 사본이 떠 다니는 것에 대해 걱정할 필요가 없습니다.

+0

내 컨트롤러에는 Using 블록 내에서 사용 된 컨텍스트를 사용하는 섹션 만 있습니다. 따라서 다른 컨텍스트 개체가 주위에 떠 다니는 지 확실하지 않습니다. – user3474542

+0

그래서 내가 위에 붙여 넣은 코드는 또한 Using 블록 내에 있고 해당 엔티티를 채우고 삭제하려고합니다. 왜 삭제해야하는지 객체가 살아있을 때 왜 문제가되는지 이해할 수 없습니다. – user3474542

관련 문제