2010-11-05 13 views
6

NHibernate'e MS SQL Server için SQL şeması dışa aktarımı oluştururken tüm tablo ve sütun adları için ([MyColumn] gibi) köşeli parantez kullanması için bir yol var mı? Belirli sütunlar için ayrılmış isimler kullanan ve NH kullanılarak oluşturulan SQL betiğini çalıştıran bir hata veriyorum.NHibernate: şema dışa aktarma işleminde köşeli parantezleri zorlamak?

Bunu her sütun için ayrı ayrı belirtmekten kaçınmak istiyorum.

GÜNCELLEME:

MsSqlConfiguration.MsSql2008.ConnectionString(connectionString) 

GÜNCELLEME 2: Doğru lehçesini kullanıyorum @UpTheCreek bana doğru yönde işaret etti - komutu ters tırnak, "Eylem yılında NHibernate" cevabı bulmama yardımcı olan book (p. 76):

NHibernate'i her yerde alıntılanan tanımlayıcıları kullanmaya zorlamak için, backticklerdeki tüm tablo ve sütun adlarını alıntılamak dışında bir yol yoktur.

+0

Özel bir lehçe yazabilirsiniz. Ama şahsen, sadece el ile backticks eklemek;) – UpTheCreek

cevap

11

kolay yaklaşım:

SchemaMetadataUpdater.QuoteTableAndColumns(config) 

otomatik olarak tüm ayrılmış isimleri teklif edecek

(SessionFactory oluşturmadan önce).

+0

Nice .......... .....! – UpTheCreek

+0

Harika bahşiş, teşekkürler! –

+0

Burada daha iyi bir çözüm var gibi görünüyor: http://stackoverflow.com/questions/2438491/fluent-nhibernate-and-postgresql-schemametadataupdater-quotetableandcolumns-sy – Nux

0

Sütun adlarının etrafında eşleme dosyalarında veritabanınız için

+0

Doğru lehçeyi kullanıyorum, soru güncellememe bakın. –

2

Kullanım komutu ters tırnak doğru lehçesini kullanmak (veya yazma) gerekir. NH, bunları db diyaliniz için doğru karakterle değiştirmelidir (sizin durumunuzda köşeli parantezler).

yani kullanım:

<class name="SomeClass" table="`SomeTable`"> 

Not - Bir kesme işareti ile çalışmaz. Backtick çoğu klavyede sol üstte bulunur.

+0

Aslında Fluent NH kullanıyordum, ama denedim ve backtickler de orada çalışıyor. İstediğimi gerçekten yapmasa da (genel bir yaklaşım ve her isim için ayrı ayrı yapmak zorunda değilim), cevabınızı kabul ediyorum, çünkü cevaplarımın olduğu yerdeki NH in Action kitabındaki bir sayfaya işaret ettim. . Teşekkürler –

+0

@Igor: Genel bir yaklaşım buldunuz mu? Bunun için diyaloğu özelleştirmeliydin. – UpTheCreek

+0

@UpTheCreek: güncellenmiş soruma bakın. Evet, lehçenin (fazla) lehçeyi yazacağını farz ediyorum, ama sanırım backticks benim şu andaki problemim için daha basit bir çözümdür :) –

İlgili konular