2012-01-27 14 views
5

kullanarak, Varlık Framework 4.1 Tembel Yükleniyor devre dışı bırakın musunuz:nasıl Bu veritabanını yapılandırmak için kullanan kod im olan Kod Göçler Yapılandırma

internal sealed class Configuration : DbMigrationsConfiguration<DataStore> 
{ 
    public Configuration() 
    { 
     AutomaticMigrationsEnabled = true; 
     SetSqlGenerator("System.Data.SqlServerCe.4.0", new SqlCeModelColumnBugWorkaroundProvider()); 

    } 

    protected override void OnSeed(DbContext context) 
    { 
     context.Configuration.LazyLoadingEnabled = false; 
     new SeedData(context as DataStore); 
    } 

    public static void DoDatabaseInitialisation() 
    { 
     var setting = ConfigurationManager.AppSettings["RequiresDbUpdate"]; 
     var requiresDbUpdate = bool.Parse(string.IsNullOrEmpty(setting) ? "false" : setting); 

     if (! requiresDbUpdate) return; 

     //otherwise create/update the database 
     var dbMigrator = new DbMigrator(new Configuration()); 
     dbMigrator.Update(); 

     ResetDbUpdateRequired("/"); 
    } 

    private static void ResetDbUpdateRequired(string appPath) 
    { 
     var hostName = WebHelper.GetHost(false); 

     if (!hostName.Contains("localhost")) 
      WebHelper.UpdateWebConfigAppSetting("RequiresDbUpdate", "false", appPath); 
    } 

herkes bunun nasıl biliyorsa, lütfen bana bildirin. Model sınıfları üzerinde sanal olmayan özellikleri de denedim, ancak bu hiç bir fark yaratmıyor gibi görünüyor.

cevap

3

Hep DBContext yöntemleri kullanarak önce çağıran

context.Configuration.LazyLoadingEnabled = false; 

kullandım, eşdeğer ayar şudur:

(context as IObjectContextAdapter).ObjectContext.ContextOptions.LazyLoadingEnabled = false; 
+0

Evet, bu yöntemi zaten denedim, kod ilk geçiş öğeleri olmadan düzgün çalışıyor. Bu yüzden bunun neden işe yaramadığını düşünüyorum ... – woz

1

Max'in çözüm noktasından uzakta değil. Aslında beni farklı bir yere ya da çözüme bakmaya teşvik etti. İlk önce EF Code kullanıyor olabilirsiniz, öyle mi? Bu nedenle, içeriğinizin başlatılmasında, 'OnModelCreated' geçersiz kılınır.

Bu yöntemde, mülkiyeti çağırdım ve ayarladım ve hepsi çözüldü.

protected override void OnModelCreating(DbModelBuilder modelBuilder) { 
    base.Configuration.LazyLoadingEnabled = false; 
} 

Modelim artık çok daha lezzetli. Tembel yükleme harika ... ama istemediğin zaman değil. Dairesel referanslar almaya başladığınızda, bu sadece saçma.