2

У меня есть устаревшая база данных, в которой используется тип данных SQL smalldatetime. Это хорошо соответствует стандарту DateTime. Однако, когда я использую SchemaExport, он, понятно, генерирует столбец с форматом datetime. Какой пользовательский тип следует использовать в моем сопоставлении, чтобы сформированный столбец был smalldatetime?FluentNHibernate mapping 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

Perfect. Думал, что есть эквивалент чему-то вроде .CustomType («AnsiString») для varchar. Я собирался попробовать CustomSqlType, но я рад, что не сделал этого, потому что не думал о добавлении CustomType («datetime»). Я предполагаю, что это также будет способ свернуть с помощью, например, smallint (CustomerSqlType («smallint»). CustomType («int»)). – Ted

+0

@Ted точно;) – MichaC

+0

И FYI для всех, кто придет после, вы можете сделать то же самое с перечислениями перечислений с небольшим завихрением (потому что если вы уже делаете пользовательский перечислитель переходов, вы уже определили CustomType). Например, с байтовым перечислением Map (x => x.Season) .Column («SomeTinyIntColumn»). CustomType (). CustomSqlType («tinyint») ... – Ted

Смежные вопросы