6

EF'in değişiklik izleme ve tembel yükleme özellikleri nedeniyle sorgularımdan biri ile ilgili sorun yaşıyorum. Sorun şu ki, sorgunun sonucunu aldıktan sonra, etki alanı nesnelerini iş modelimde eşlemek için AutoMapper kullanıyorum, ancak içerik bertaraf edildiği için bir istisna atmaya devam ediyor.ObjectContext örneği atılmıştır ve artık bir bağlantı gerektiren işlemler için kullanılamaz

ObjectContext örneği atılmıştır ve artık bağlantı gerektiren işlemler için kullanılamaz. Ben ayıklayıcısında çıkan koleksiyon baktığımızda

, ben bir DynamicProxy listesi değil, gerçek varlık olduğunu görüyoruz. Değişim İzlemeyi durdurmaya çalıştım ancak bu yardımcı olmadı.

public List<ContentTypeColumn> GetContentTypeColumns(Int64 contentTypeId) 
    { 
     List<ContentTypeColumn> result = new List<ContentTypeColumn>(); 
     using (SCGREDbContext context = new SCGREDbContext()) 
     {     
      ContentType contentType = context.ContentTypes.Include("Parent").AsNoTracking().FirstOrDefault(x => x.Id.Equals(contentTypeId)); 

      result.AddRange(contentType.ContentTypeColumns.ToList()); 
      while (contentType.Parent != null) 
      { 
       result.AddRange(contentType.Parent.ContentTypeColumns.ToList()); 
       contentType = contentType.Parent; 
      }  
     } 
     return result.ToList(); 
    } 

Not: İşte benim kod Eğer bu operasyonda benim etki alanı modeli içine bakmak gerekirse basitçe açabilirsiniz izleme tembel yükleme ve dinamik değişikliğini durdurmak için gerekirse this question.

+0

Tembel yükleniyor? Buna sebep olur. –

+0

Biliyorum ve bu özel durumda Lazy Loading'den kaçınmaya çalışıyorum ama etrafta bir yol bulamıyorum. Baska öneri? – Kassem

+0

Olası kopyası [Nasıl çözülür? ObjectContext örneği atılmıştır ve artık bağlantı gerektiren işlemler için kullanılamaz] (https://stackoverflow.com/questions/18398356/how-to-solve-the- error-the-objectcontext-instance-has-olmuştur-ve-can-no-l) –

cevap

19

başvurabilirsiniz kapalı:

using (SCGREDbContext context = new SCGREDbContext()) 
{ 
    context.Configuration.ProxyCreationEnabled = false; 
    ... 
} 
+0

Bu yaptı ... Teşekkür ederim :) – Kassem

+0

Mükemmel! Bu sadece beni çok zaman kurtardı! –

İlgili konular