2009-01-11 21 views
9

NHibernate yapılandırma dosyalarından veritabanı tabloları ve C# sınıfları üretmek mümkün mü? Daha sonra, yapılandırma dosyalarını değiştirmek ve tabloları ve yapılandırma dosyalarını yıkıcı olmayan şekilde güncellemek mümkün müdür?NHibernate yapılandırma dosyalarından Veritabanını Oluştur

Bunu yapmak için herhangi bir araç önerir misiniz? (tercihen ücretsiz ...)

cevap

13

Joachim tarafından belirtildiği gibi, aradığınız "hbm2ddl.auto" ayarıdır.

var cfg = new NHibernate.Cfg.Configuration(); 
cfg.SetProperty("hbm2ddl.auto", "create"); 
cfg.Configure(); 

Ve ayrıca App.config dosyasında ayarlayabilirsiniz:

Böyle koduna göre ayarlayabilirsiniz

<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2"> 
    <session-factory> 
     <property name="hbm2ddl.auto">create</property> 
2

Evet, veritabanı tablolarını ve NHibernate yapılandırma dosyalarından C# sınıflarını oluşturmak mümkündür. Bu örnekle burada açıklayayım.

1: Address.hbm.xml

<?xml version="1.0" encoding="UTF-8"?> 

<hibernate-mapping 
    xmlns="urn:nhibernate-mapping-2.0" 
    default-cascade="none"> 

    <class 
     name="Your.Domain.AddressImpl, Your.Domain" 
     table="[ADDRESS]" 
     dynamic-insert="true" 
     dynamic-update="true" 
     lazy="true"> 

     <id name="Id" type="long" unsaved-value="0"> 
      <column name="ID" sql-type="NUMERIC(19,0)"/> 
      <generator class="native">   </generator> 
     </id> 



     <property name="Address1" type="string"> 
      <column name="ADDRESS1" not-null="true" unique="false" sql-type="VARCHAR(100)"/> 
     </property> 

     <property name="Address2" type="string"> 
      <column name="ADDRESS2" not-null="true" unique="false" sql-type="VARCHAR(100)"/> 
     </property> 

     <property name="City" type="string"> 
      <column name="CITY" not-null="true" unique="false" sql-type="VARCHAR(100)"/> 
     </property> 

     <property name="State" type="string"> 
      <column name="STATE" not-null="true" unique="false" sql-type="VARCHAR(100)"/> 
     </property> 

     <property name="Zipcode" type="string"> 
      <column name="ZIPCODE" not-null="true" unique="false" sql-type="VARCHAR(100)"/> 
     </property> 




    </class> 
</hibernate-mapping> 

Adım 2: Sadece yapılandırma dosyasına bakarak, nesne siply aşağıdaki

benziyor Adres
using System; 

namespace Your.Domain 
{ 

    public partial class Address 
    { 



     #region Attributes and Associations 

     private string _address1; 
     private string _address2; 
     private string _city; 
     private long _id; 
     private string _state; 
     private string _zipcode; 

     #endregion 

     #region Properties 

     /// <summary> 
     /// 
     /// </summary> 
     public virtual string Address1 
     { 
      get { return _address1; } 
      set { this._address1 = value; } 
     } 

     /// <summary> 
     /// 
     /// </summary> 
     public virtual string Address2 
     { 
      get { return _address2; } 
      set { this._address2 = value; } 
     } 

     /// <summary> 
     /// 
     /// </summary> 
     public virtual string City 
     { 
      get { return _city; } 
      set { this._city = value; } 
     } 

     /// <summary> 
     /// 
     /// </summary> 
     public virtual long Id 
     { 
      get { return _id; } 
      set { this._id = value; } 
     } 

     /// <summary> 
     /// 
     /// </summary> 
     public virtual string State 
     { 
      get { return _state; } 
      set { this._state = value; } 
     } 

     /// <summary> 
     /// 
     /// </summary> 
     public virtual string Zipcode 
     { 
      get { return _zipcode; } 
      set { this._zipcode = value; } 
     } 


     #endregion 
    } 
} 

Adım 3: Ve "Sütun" adı özelliğine ve aslında "Adres" adı verilen Gerçek arka uç veritabanı tablosuna başvuran veri türüne bakarsanız tekrar.

içinde (eğer vb UML gibi farklı girdi, Ya Gerçek Veritabanı şema

2

çek dışarı "hbm2ddl.auto" ayarı göre sizin için tüm bu eserler üretmek için yardımcı araçlar büyük miktarda vardır yapılandırma veya NHibernate.Cfg.Configuration). "create" ile tüm veritabanı şemasını eşleştirmelerinizden yeniden oluşturabilir ve "update" (güncelleme) ayarı sadece şemanızı güncellemelidir.

İlgili konular