我知道NHibernate 2的一个重大变化是*不再支持NHibernate.Nullables.因此,您在映射文件中使用什么来映射可为空的DateTime?类型?对于ie:
可以理解的是不起作用:
<property name="CreateDate" column="CreateDate" type="DateTime?" not-null="false" />
Run Code Online (Sandbox Code Playgroud)
不再支持:
<property name="ModifiedDate" column="ModifiedDate" type="Nullables.NHibernate.NullableDateTimeType, Nullables.NHibernate" not-null="false"/>
Run Code Online (Sandbox Code Playgroud)
我知道它一定很明显,但我找不到它!
答案很简单:NHibernate会反映出有问题的类,并发现该属性的反射类型是DateTime?一切都靠自己.
谢谢@Justice!
我正在使用NHibernate作为后端的ASP.NET MVC项目,并且在获取一些日期以回写到我的SQL Server数据库表时遇到了一些麻烦.
这些日期字段不可为空,因此这里有关如何设置可为空的日期时间的许多答案都没有帮助.
基本上当我尝试保存具有DateAdded和LastUpdated字段的实体时,我得到一个SqlDateTime溢出异常.我曾经遇到类似的问题,我试图将日期时间字段写入smalldatetime列,更新列上的类型似乎可以解决问题.我的直觉是,它会对表定义或某些类型的不兼容数据类型产生一些问题,而溢出异常则有点笨拙.
我附加了一个表定义和NHibernate试图运行的查询的示例,任何帮助或建议将不胜感激.
CREATE TABLE [dbo].[CustomPages](
[ID] [uniqueidentifier] NOT NULL,
[StoreID] [uniqueidentifier] NOT NULL,
[DateAdded] [datetime] NOT NULL,
[AddedByID] [uniqueidentifier] NOT NULL,
[LastUpdated] [datetime] NOT NULL,
[LastUpdatedByID] [uniqueidentifier] NOT NULL,
[Title] [nvarchar](150) NOT NULL,
[Term] [nvarchar](150) NOT NULL,
[Content] [ntext] NULL
)
exec sp_executesql N'INSERT INTO CustomPages (Title, Term, Content, LastUpdated, DateAdded, StoreID, LastUpdatedById, AddedById, ID) VALUES (@p0, @p1, @p2, @p3, @p4, @p5, @p6, @p7, @p8)',N'@p0
nvarchar(21),@p1 nvarchar(21),@p2 nvarchar(33),@p3 datetime,@p4 datetime,@p5 uniqueidentifier,@p6 uniqueidentifier,@p7 uniqueidentifier,@p8 uniqueidentifier',@p0=N'Size and Colour …Run Code Online (Sandbox Code Playgroud)