2009-05-03 11 views
8

NHibernate ile ilk adımı atıyorum, bunu otomatik olarak hbm dosyalarından Tablolarım oluşturmaya çalışıyorum. Veritabanı arka planı SQL Server 2008 Developer Edition'dır.NHibernate SchemaExport, "komut dosyası" false olduğunda tablolar oluşturmuyor

var cfg = new Configuration(); 
cfg.Configure(); 
cfg.AddAssembly(typeof(Posting).Assembly); 
new SchemaExport(cfg).Execute(false,true,false,false); 

Ne yazık ki, bu işe yaramazsa:

Bu NHibernate Tutorials gördüğüm ortak örnek kodudur. Show_sql öğesini true olarak ayarladım ve herhangi bir ifade basmıyor. SQL profiler'e bakıyorum Uygulamamın DB'ye bağlandığını görüyorum ama sonra hiçbir şey yapmıyor.

ben true ilk parametre ("script") değiştirerek onu düzeltirim:

new SchemaExport(cfg).Execute(true,true,false,true); 

Nedenini anlamıyorum. SchemaExport parametreleri ne yazık ki açıklanmamıştır (ayrıca .Create ve .Execute arasındaki fark değil) ve bu parametrenin ne yaptığını ve neden gerekli olmadığını öğrenmek istiyorum, yani SQL Compact Edition kullanırken betik yanlıştır)

cevap

27

SchemaExport, NHibernate işlevinden gerçekten ayrı olan Hbm2Ddl yardımcı programının bir parçasıdır. NHibernate yalnızca çalışırken kullanılan "show_sql" yi kullanmaz.

Eğer .SetOutputFile (dosya adı)

kullanmak Buna göre yeni bir veritabanı oluşturmak istediğinizde kullandığım yöntemdir oluşturmak şemanın bir kopyasını almak için. Ben MyDDL.sql dosyasında biçimlendirilmiş bir şemasını almak ve veritabanı şeması inşa edilmiştir:

private void BuildSchema(Configuration config) 
{ 

     new SchemaExport(config) 
      .SetOutputFile(_fileName + "MyDDL.sql") 
      .Execute(true /*script*/, true /*export to db*/, 
        false /*just drop*/, true /*format schema*/); 
} 

SchemaExport.Create sadece yanlış ve format gerçek olan sadece iniş ile Schema.Execute bir kısa yoldur.

public void Create(bool script, bool export) 
    { 
     Execute(script, export, false, true); 
    } 
+0

Bunu NHibernate 3.3 ile kullanıyorum, dosyaya değil veritabanına yazıyor. –

İlgili konular