English 中文(简体)
NHibernate - Why mytime property is 所有这些日期。 MinValue
原标题:NHibernate - Why my DateTime property is always DateTime.MinValue
  • 时间:2009-11-04 11:01:13
  •  标签:

I have a [DataContract] called ReportRequest with a NOT NULL column SubmittedAt . So my DataContract looks something like:

[DataContract]
public class ReportRequest
{
    Int32 templateId;
    DateTime submittedAt = DateTime.Now;

    [DataMember]
    public virtual Int32? Id
    {
        get;
        set;
    }

    public virtual DateTime SubmittedAt
    {
        get {
              return submittedAt; 
        }
        set
        {
            submittedAt = value; 
        }
    }
}

因此,我采用了所提交的个人变量。 日期待定。 现在,

提 交 人 财产价值相同?

但当我叫NHibernate的时候

session.Save(objReportRequest);

我正在犯错误:

SqlDatetime overflow. 页: 1 页: 1

我为什么会发现这一错误?

作为现在的工作,我改变了提交At财产的来源:

        get {
            if (submittedAt == DateTime.MinValue)
                return DateTime.Now;
            else
                return submittedAt; 
        }
最佳回答

这是因为:Datetime.MinValue。 t与你可以储存在服务器日记栏的最低价值相同。 在服务器日机一栏中,你可以储存的最低日期是你在例外情况下获得的日期。 http://msdn.microsoft.com/en-us/library/system.data.sqltypes.sqldatetime.min Value.aspx” rel=“nofollow noreferer”>SqlDatetime.MinValue

问题回答

服务器最低日值大于时值。 采矿价值。 因此,你不能节省数据库的最低价值。

正如Marek Tihkan已经说过的:SqlServer不能储存,它不属于SqlServer日数据类型的价值范围。

最好建议是,在以下任何方面使用不可撤销的类型:

[DataContract]
public class ReportRequest
{
    DateTime? submittedAt = null;

    public virtual DateTime? SubmittedAt
    {
        get {
              return submittedAt; 
        }
        set
        {
            submittedAt = value; 
        }
    }
}

通过SubmittedAt.HasValue,你知道这是否实际上被设定为某种合理的。 你们必须依靠某些“礼仪价值”来决定价值是否已经形成。





相关问题
热门标签