yeniden düşünün.
<hibernate-mapping xmlns="urn:nhiernate-mapping-2.2">
<database-object>
<create>VALID SQL</create>
<drop>VALID SQL</create>
</database-object>
</hibernate-mapping>
N.B.: Bir hbm.xml dosyasında
< veritabanı nesnesi >, aynı hbm.xml dosyasında, sınıf tanımlarını, tetikleyicileri, vb. Uygulayacağınız nesneyle tutmanıza olanak veren bir sınıf eşlemesinden önce veya sonra gidebilir. Eğer Fluent NHibernate kullanıyoruz, IAuxiliaryDatabaseObject muhtemelen sizin için daha iyi çalışır göz önüne alındığında
namespace NHibernate.Mapping {
public interface IAuxiliaryDatabaseObject : IRelationalModel {
void AddDialectScope(string dialectName);
bool AppliesToDialect(Dialect dialect);
void SetParameterValues(IDictionary<string, string> parameters);
}
public interface IRelationalModel {
string SqlCreateString(Dialect dialect, IMapping p, string defaultCatalog, string defaultSchema);
string SqlDropString(Dialect dialect, string defaultCatalog, string defaultSchema);
}
}
:
Diğer seçenek
NHibernate.Mapping.IAuxiliaryDatabaseObject olduğunu. Yapılandırırken yapılandırmanızı görün ve sonra da şu numarayı arayın:
N.B. NHibernate.Mapping.SimpleAuxiliaryDatabaseObject, NHibernate'nin bir parçasıdır. Yapmanız gereken tek şey, bir veritabanı nesnesi için oluşturma/bırak komutları sağlamaksa, kendiniz yazmak zorunda değilsiniz.
Fluent NHibernate kod tabanına hızlıca baktım ve IAuxiliaryDatabaseObject için doğrudan destek görmedim. Dolayısıyla, yapılandırma nesnesini açığa çıkarma ve tüm IAuxiliaryDatabaseObjects öğelerinizi kendiniz tedarik etme sorunudur. Eşleme derlemenizi tarayan bazı kodları IAuxiliaryDatabaseObject uygulayan türleri aramak ve sonra cfg.AddAuxiliaryDatabaseObject (obj) 'a geçmek için üzerinde gezinmek için kod yazmak çok zor olmaz.
http://nhibernate.info/doc/nh/en/index.html#mapping-database-object
+1 sonunda bunu yapmak için bir yol bulmak istediniz:
Sen NHibernate docs yardımcı veritabanı nesneler hakkında daha fazla bilgi bulabilirim?Aynı problemi yaşıyorum. – Groo
Haritalama beyanlarının sırasını değiştirmeyi denediniz mi? (Çalışırsa bile biraz bir şekerleme!) – UpTheCreek
@UpTheCreek: Ben'in aşağıda dediği gibi, işe yaramadığını düşünüyorum. Ve birden fazla sütun dizini birden fazla olsaydı, bu yaklaşım başarısız olur, çünkü tek bir sütunu * tüm * dizinlerindeki en büyük dizin sütunu olmasını zorlar. – Groo