回答

5

如果你正在使用的约定,那么这确实对我的工作:

public class PropertyConvention : IPropertyConvention 
{ 
    public void Apply(IPropertyInstance instance) 
    { 
     if (instance.Property.PropertyType == typeof(TimeSpan)) 
      instance.CustomType("TimeAsTimeSpan"); 
    } 
} 
+0

也为我工作。 – 2011-10-12 08:31:51

1

你应该能够使用CustomType来映射它。

+0

我把什么CustomType? TimeAsTimeSpan或DBType.Time? 随着TimeAsTimeSpan我得到一个例外,因为类型没有一个没有参数的构造函数 – 2010-02-19 16:07:02

+0

链接文章的第一行是“CustomType(”TimeAsTimeSpan“)应该工作正常”。 – 2010-03-25 12:17:45

7

这是为我工作:

Map(x => x.TimeFrom) 
    .CustomType("TimeAsTimeSpan"); 
+0

这有效,但你如何处理数据库中的NULL值? TimeSpan.Zero等于新的TimeSpan(0,0,0),因此无法工作,并且通过NHibernate的TimeAsTimeSpanType持续为“00:00:00”。戳穿源代码,它似乎根本不处理NULL值?无论是将NULL还是“00:00:00”放入列中,都以NHibernate作为TimeSpan.Zero的方式返回。是什么赋予了? – 2011-05-27 17:57:34

+3

@ mindplay.dk'TimeSpan'不能表示'null'。 'TimeSpan?'可以。 – 2013-10-08 03:40:31