6

Varlık Çerçeve Geçişlerini Kullanma (Beta1), Güncelleştirme Veritabanı komutunu kullanarak geliştirme sırasında her şey iyidir. Uygulama yerde bazı müşterinin sunucuda çalışırkenUygulama başlangıcında kod geçişini tetikleme

Ama, gerçekten Başladıktan otomatik güncellemek için başvurum son sürüme veritabanı şeması var istiyorum.

Bu mümkün mü? Belgeler azdır.

cevap

11

Onlar bir komut satırı uygulaması ve bir msdeploy sağlayıcı söz verdiler bu noktada RTM kadar bunu yapmanın bir yolu, sağlamamaktadır. Kaynak: Elbette http://blogs.msdn.com/b/adonet/archive/2011/11/29/code-first-migrations-beta-1-released.aspx

o memnun değilse, powershell komut paketleri dizinde saklanan ve düz metin, sadece aynı dizinde saklanan bir montaj denir EntityFramework.Migrations.Commands yüklemek görünmektedir mesafesindedir. Bu montaj yoluyla izleme

aşağıdaki

public class MyContext : DbContext 
{ 
    static MyContext() 
    { 
    DbMigrationsConfiguration configuration = new DbMigrationsConfiguration() { 
     MigrationsAssembly = typeof(MyContext).Assembly, 
     ContextType = typeof(MyContext), 
     AutomaticMigrationsEnabled = true,     
    }; 

    DbMigrator dbMigrator = new DbMigrator(configuration);   
    dbMigrator.Update(null);    
    } 
} 

UPDATE ile geldi: deneme biraz ben statik yapıcı bir güncelleştirme gerçekleştirme birkaç şey daha

  • anladım sonra sizin uygulamanın başlangıcında için başka bir yol (Global.asax, WebActivator veya Ana yöntemi) kod ekleyerek çok, daha iyi powershell komutları kırar olarak bağlam kötü
  • AutomaticMi kullanırken yukarıdaki kod çalışır
  • grations, bunu sadece yerine o örneğini, el ile oluşturulan göçler
  • Zaten (eğer göç Nuget paketini yüklerken eklendi) projenizde olması gereken yaratıyordu yapılandırma sınıfı üzerinde pikap bunun için MigrationsNamespace ayarlamanız gerekir. kod anlamına gelir

sizin Global.asaxApplication_Start yöntemine

Database.SetInitializer<MyContext>(new MigrateDatabaseToLatestVersion<MyContext, NAMESPACE.TO.MIGRATIONS.Configuration>()); 

satır eklemeniz

DbMigrator dbMigrator = new DbMigrator(new NAMESPACE.TO.MIGRATIONS.Configuration()); 
dbMigrator.Update(null);   
+3

bu artık güncel olduğuna dikkat edin, EF 4.3 RTM MigrateDatabaseToLatestVersion adlı yeni bir veritabanı başlatıcı içerir. Daha fazla bilgi için http://stackoverflow.com/questions/9281423/entity-framework-4-3-run-migrations-at-application-start adresine bakın. – Betty

+0

bağlam kurucusundaki başlatıcısı ayarı powershell komut müdahale etmek görünse de. Yukarıdaki kodla bir app_start modülünü kullanmaya başladım. – Betty

4

Bu sorunla ilgili başka seçenekler olduğu için basitleştirilmiştir.

İlgili konular