Nhibernate Fluent 日期时间映射在 DB 中创建空列

Posted

技术标签:

【中文标题】Nhibernate Fluent 日期时间映射在 DB 中创建空列【英文标题】:Nhibernate Fluent datetime mapping creates null column in DB 【发布时间】:2013-11-30 03:48:34 【问题描述】:

我真的很难在任何地方找到答案。

我得到了这个类声明:

public class Order

   public virtual long Id  get; set; 

   public virtual DateTime OrderDate  get; set; 

我创建了一个映射类,在其中使用以下内容映射属性 OrderDate

Map(x => x.OrderDate)
    .CustomSqlType("datetime2")
    .Not.Nullable();

当它被导出到数据库时,它会创建 NULL 列,忽略 Not.Nullable 指令。

任何帮助将不胜感激。

【问题讨论】:

【参考方案1】:

我会说,映射应该是这样的:

Map(x => x.OrderDate)
    .CustomType("datetime2") // not CustomSqlType
    .Not.Nullable();

如果您使用的是 SQL Server 2008+,请查看此链接以获取有关关系 DB.、CLR 和 NHibernate 类型的更多信息NHibernate and Ms Sql Server 2008: Date, Time, DateTime2 and DateTimeOffset

【讨论】:

以上是关于Nhibernate Fluent 日期时间映射在 DB 中创建空列的主要内容,如果未能解决你的问题,请参考以下文章

使用 Fluent NHibernate 和 NHibernate 3 将枚举映射为 Int

Fluent Nhibernate 映射多重连接

Fluent NHibernate:在映射中急切加载多个集合

使用 Fluent NHibernate 映射泛型类

使用 2 种策略通过 fluent nhibernate 映射类层次结构

如何告诉 Fluent NHibernate 不要映射类属性