Detach(object entity)
Üzerinde yokDbContext
.
Önce EF kodundaki nesneleri ayırma yeteneğim var mı?
Detach(object entity)
Üzerinde yokDbContext
.
Önce EF kodundaki nesneleri ayırma yeteneğim var mı?
Yanıtlar:
Mevcut nesneyi ayırmak istiyorsanız @ Slauma'nın tavsiyelerine uyun. Değişiklikleri izleme olmadan nesneleri yüklemek istiyorsanız şunu kullanın:
var data = context.MyEntities.AsNoTracking().Where(...).ToList();
Yorumda belirtildiği gibi, bu varlıkları tamamen ayırmayacaktır. Hala ekli ve tembel yükleme işleri var, ancak varlıklar izlenmiyor. Bu, örneğin varlığı yalnızca verileri okumak üzere yüklemek istiyorsanız ve bunları değiştirmeyi planlamıyorsanız kullanılmalıdır.
Bu bir seçenektir:
dbContext.Entry(entity).State = EntityState.Detached;
entity
model sınıflarınızın (Kişi, Müşteri, Sipariş vb.) Bir parçası olan materyalize bir nesne olmalıdır. Bir IQueryable <T> içine doğrudan geçemezsiniz dbContext.Entry(...)
. Demek istediğin soru bu mu?
Detached
. Varlıkları, bağlama hiç bağlamadan DB'den yüklemek istiyorsanız (değişiklik izleme yok) kullanın AsNoTracking
.
Detached
.
using(ctx){ return ctx....ToList(); }
. Bu gibi durumlarda kullanmakAsNoTracking()
mantıklı olurdu çünkü gereksiz yere nesne içeriğini doldurmaktan tasarruf edeceğim. Muhtemelen özellikle büyük listeler için bir performans ve bellek tüketimi faydası olur, değil mi?