2

我有一個使用smalldatetime SQL數據類型的遺留數據庫。這恰好映射到標準DateTime。但是,當我使用SchemaExport時,可以理解地生成格式爲datetime的列。我應該在我的映射中使用哪種自定義類型,以便生成的列是smalldatetimeFluentNHibernate映射smalldatetime SQL數據類型

// Does not work as custom type not known  
    Map(x => x.BirthDate).Column("dtBirthDate").Not.Nullable().CustomType("smalldatetime"); 

回答

1

你幾乎擁有它,而不是.CustomType你必須定義.CustomSqlType

Map(x => x.BirthDate) 
    .Column("dtBirthDate") 
    .Not.Nullable() 
    .CustomSqlType("smalldatetime") 
    .CustomType("datetime") 

只是測試它,它會創建SMALLDATETIME的數據庫列。

+0

完美。認爲有一個等同於類似.CustomType(「AnsiString」)的varchar。我將嘗試CustomSqlType,但我很高興我沒有,因爲我不會想到添加CustomType(「datetime」)。我假設這也將成爲與smallint(CustomerSqlType(「smallint」)。CustomType(「int」))一起滾動的方式。 – Ted

+0

@Ted exactly;) – MichaC

+0

對於後來的任何人來說,你可以用enum映射來做同樣的轉換(因爲如果你已經在做一個自定義枚舉映射器,那麼你已經定義了CustomType )。例如,使用字節枚舉,Map(x => x.Season).Column(「SomeTinyIntColumn」)。CustomType ()。CustomSqlType(「tinyint」)... – Ted

相關問題