2009-10-09 9 views
14

Przeczytałem, że użycie tyknięcia wstecznego ` powinno pozwolić na użycie zarezerwowanych słów. Używam SQL Server i Fluent NHibernate i mam nazwę kolumny "Plik". Gdybym map goFluent NHibernate Column Mapping z zastrzeżonym słowem

"`File" 

próbuje za pomocą

[Fil] 

więc to dodanie wsporników poprawnie, ale upuszczenie „e” od końca. Gdybym map jako

"`Filee" 

używa

[File] 

poprawnie.

Czy robię coś nie tak, czy jest to błąd w NHibernate lub Fluent Nhibernate?

+0

Próbowałeś z zewnątrz robi niczego z FluentNhibernate. Jeśli wyeksportujesz plik fluktuacji HHMNHibernate zapiszesz dla ciebie table = "File". –

Odpowiedz

19

Musisz umieścić `po obu stronach, tak:

"`File`" 

Jak mówi @Astaar, pełna składnia jest następująca:

Map(x => x.File).Column("`File`"); 
+0

O, mój, który długo potrzebował odpowiedzi. Dziękuję Ci! –

+0

Nawiasy kwadratowe również działają: Mapa (x => x.File) .Kolumna ("[Plik]"); – Chronozoa

+0

@Cronrony, czy wiesz, że to ostatni dodatek? Przysięgam, że próbowałem tego w 2010 roku, kiedy odpowiedziałem na to pytanie i nie zadziałało. –

5

Aby być całkowicie jasne, dokładna składnia byłoby

Map(x => x.File).Column("`File`"); 
4

Istnieje non opcji ręcznej konfiguracji dla tego jako objęte tutaj: NHibernate: forcing square brackets in schema export?

jak również alternatywnie: Fluent NHibernate and PostgreSQL, SchemaMetadataUpdater.QuoteTableAndColumns - System.NotSupportedException: Specified method is not supported

Np SchemaMetadataUpdater.QuoteTableAndColumns(cfg) który w FluentNhibernate będzie wyglądać

var config = Fluently.Configure() 
    ... 
    ... 
    .ExposeConfiguration(cfg => SchemaMetadataUpdater.QuoteTableAndColumns); 
+0

Myślę, że to rozwiązanie jest lepsze, ponieważ jest to ustawienie jednorazowe zamiast dodawania wszystkich nowych nazw kolumn, które są zarezerwowane dla konkretnych słów na każdej mapie. –

+0

Ta metoda jest nieaktualna i nie działa dla mnie. – sky91

Powiązane problemy