ASP.NET MVC 애플리케이션에서 .NET 3.5 SP1을 사용하고 있습니다. "같은 키를 가진 개체가 이미 ObjectStateManager에 존재하는 ObjectStateManager는 여러 객체를 추적 할 수 없습니다 :HTTP 요청을 보유한 ObjectContext를 사용할 때 엔티티를 첨부합니다.
HTTP 요청 수명과 ObjectContext를 사용하고 상황에 이미 존재하는 엔티티를 첨부하려고 노력하는 동안, 우리는 오류를 얻을. 같은 열쇠. " 예를 들어 코드 : 카테고리 ID = CategoryIdSelected와 '카테고리'ObjectContext는에있는 경우
Category newCategory = new Category {CategoryId = CategoryIdSelected};
ctx.AttachTo("CategorySet", newCategory);
오류를 줄 것이다.
Category newCategory = new Category {CategoryId = CategoryIdSelected};
ObjectStateEntry stateEntry = null;
if(ctx.ObjectStateManager.TryGetObjectStateEntry(newCategory, out stateEntry)){
//EntityObject already attached in context, get it
newCategory = (EntityObject)stateEntry.Entity;
}else{
ctx.AttachTo("CategorySet", newCategory);
}
수정 된 코드가 여전히 제공되는 동일한 에러 : 가 "[System.InvalidOperationException] = {"동일한 키를 가진 개체가 이미 ObjectStateManager 존재
수정 코드는 기존의 엔티티 확인 . ObjectStateManager는 동일한 키를 사용하여 여러 개체를 추적 할 수 없습니다 "
알려 주시기 바랍니다
당신에게질문 부칙 감사합니다.? 가진 ObjectContext를를 사용하는 경우 엔티티를 부착
더 많은 문제를 HTTP 요청의 수명.
예를 들어 'AppUser', 'Category'및 Department 엔티티가있는 경우.
public class AppUser : System.Data.Objects.DataClasses.EntityObject{
public int Uid {get; set;}
public string UserName {get; set;}
public string Password {get; set;}
public Department Dept {get; set;}
public Category catg {get; set;}
...........
}
AppUser는 부서 및 카테고리 엔터티와 관련이 있습니다. '사용자'에 연결하려고 할 때 지금 :
user = new AppUser{Uid=1,catg = new Category {categoryId=10}, Dept = new Department{departmentId=101}, ...}
var key = ctx.CreateEntityKey("AppUserSet", user);
if (ctx.ObjectStateManager.TryGetObjectStateEntry(key, out stateEntry)) {
는 상황에서, 경우에만 작동합니다 : 카테고리 ID = 10 NO 카테고리가 없습니다
- 및
- 은 departmentId와 NO 부서가 = 101
하나의 옵션은 항상 NOMERGE NoTracking 옵션을 사용하여 검색하여 컨텍스트에 첨부 된 엔터티가 없는지 확인하는 것입니다. 하지만 나는 MergeOption.NoTracking와 함께 다음과 같은 문제를 발견 여전히 DB를 초래
- 두 번째 호출 당신은 EntityRefs에 EntityKeys을하지 않는
- 을했다. 그래서 XXXReference의 EntityKey는 null입니다. 이것은 FK 스텁이 없음을 의미합니다. Please see.
양쪽 엔티티 (양쪽 엔티티)를로드하지 않고 참조의 EntityKey를 얻는 방법은 무엇입니까? - Entity가 분리 되어도 Entity._realtionships._context를 통해 DataContext에 대한 참조가 있습니다.Please see.
알려 주시기 바랍니다.
감사합니다.
고마워요! 그것은 같은 맥락입니다. 오타를 바로 잡았습니다. – dev