아래 코드에서 알 수 있듯이 AsNoTracking을 사용하여 개체를 가져옵니다. 그때에도 무슨 일이 일어나고 있는지 볼 수 ObjectSateManager를 사용하고 난 아무 것도 리터 * 컬렉션에서 추적되고 있지 볼 수 있습니다 아직 난 여전히AsNoTracking 및 ObjectStateManager의 엔터티 프레임 워크 오류
는 "같은 키를 가진 개체가 이미 ObjectStateManager에 존재 얻을. ObjectStateManager는 할 수 없습니다 같은 키로 여러 객체를 추적 "하십시오.
아이디어가 있으십니까?
=========================
바구니 보관함 repo = 새로운 BasketRepository();
var ba = repo.GetById(8);
var bpro = new BasketProduct(ba, ba.BasketProducts.First().Product, 3);
repo.AddToBasket(bpro);
repo.Save();
==================================
public Basket GetById(int basketId)
{
// eager-load product info
var basket = dbContext.Baskets.Include("BasketProducts")
.Include("BasketProducts.Product.Brand").AsNoTracking().SingleOrDefault(b => b.BasketId == basketId);;
return basket;
}
== ====================
public void AddToBasket(BasketProduct product)
{
var ctx = ((IObjectContextAdapter)dbContext).ObjectContext;
ObjectStateManager objectStateManager = ctx.ObjectStateManager;
var l1 = objectStateManager.GetObjectStateEntries(EntityState.Added);
var l2 = objectStateManager.GetObjectStateEntries(EntityState.Modified);
var l3 = objectStateManager.GetObjectStateEntries(EntityState.Deleted);
//var l4 = objectStateManager.GetObjectStateEntries(EntityState.Detached);
var l5 = objectStateManager.GetObjectStateEntries(EntityState.Unchanged);
var existingProductInBasket = dbContext.BasketProducts.AsNoTracking().SingleOrDefault(b => b.BasketId == product.BasketId && b.ProductId == product.ProductId);
var l6 = objectStateManager.GetObjectStateEntries(EntityState.Added);
var l7 = objectStateManager.GetObjectStateEntries(EntityState.Modified);
var l8 = objectStateManager.GetObjectStateEntries(EntityState.Deleted);
//var l4 = objectStateManager.GetObjectStateEntries(EntityState.Detached);
var l9 = objectStateManager.GetObjectStateEntries(EntityState.Unchanged);
//objectStateManager.
dbContext.Entry<BasketProduct>(product).State = existingProductInBasket == null ? EntityState.Added : EntityState.Modified;
}
질문 : 'dbContext'의 수명은 얼마입니까? 객체의 상태를 변경하면 항상 새로운 것입니까? –