2

J'ai une base de données existante qui utilise le type de données SQL smalldatetime. Cela correspond bien à la norme DateTime. Toutefois, lorsque j'utilise SchemaExport, il génère de manière compréhensible la colonne au format datetime. Quel type personnalisé dois-je utiliser dans mon mappage pour que la colonne générée soit smalldatetime?FluentNHibernate mappage smalldatetime Type de données SQL

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

Répondre

1

Vous avez presque eu, au lieu de .CustomType vous devrez définir .CustomSqlType

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

Juste testé et il va créer une colonne de base de données avec smalldatetime.

+0

Parfait. Pensé il y avait un équivalent à quelque chose comme .CustomType ("AnsiString") pour varchar. J'allais essayer CustomSqlType, mais je suis content de ne pas l'avoir fait car je n'aurais pas pensé à ajouter CustomType ("datetime") aussi. Je suppose que ce serait aussi le moyen de rouler avec i.e. smallint (CustomerSqlType ("smallint"). CustomType ("int")). – Ted

+0

@Ted exactement;) – MichaC

+0

Et FYI pour quelqu'un d'autre après, vous pouvez faire la même chose avec les mappages enum avec un peu d'une torsion (parce que si vous faites déjà un mappeur enum personnalisé, vous aurez déjà défini le CustomType). Par exemple, avec une énumération d'octets, Map (x => x.Season) .Column ("SomeTinyIntColumn"). CustomType (). CustomSqlType ("tinyint") ... – Ted

Questions connexes