【发布时间】:2011-02-16 10:10:12
【问题描述】:
这是我的模型的 sn-p:
* SQL Server *
Event
-----
Id (int, PK) NOT NULL
Title (varchar(100)) NULL
LastModified (datetime) NULL
EventDates
----------
Id (int, PK) NOT NULL
StartDate (datetime) NULL
EndDate (datetime) NULL
* C# *
Event
-----
public int Id
public string Title
public DateTime LastModified
EventDates
----------
public int Id
public DateTime StartDate
public Datetime EndDate
LastModified 字段自创建以来一直在数据库中。我在保存事件时一直在保存它的值,但我想在表格中显示它,所以我更改了我的事件存储库 GetEvents 的返回值:
return (from e in GetDbEvents()
select new Event
{
// Miscellaneous fields..
LastModified = e.LastModified.GetValueOrDefault() // Shiny new code
});
当我现在打电话时,我会被骂:
The conversion of a char data type to a datetime data type
resulted in an out-of-range datetime value.
如果我将上面的代码去掉,它仍然没有帮助,如果我尝试枚举结果,我会得到同样的错误:
var test = (from e in _db.Events
select e.LastModified.GetValueOrDefault());
作为测试,我对 EventDates 表做了同样的声明(同样,有 2 个日期时间列):
var test4 = (from ed in _db.EventDates
select new EventDate
{
StartDate = ed.StartDate.GetValueOrDefault(),
EndDate = ed.EndDate.GetValueOrDefault()
});
当然,这很好用。我枚举时没有错误,所有值都是正确的。
我应该指出Events 表中的一些LastModified 值是NULL,而EventDates 中的所有值都填充了数据。
编辑
我的主要问题是为什么Events 给我超出范围的问题而EventDates 没有,即使模型非常相似?
【问题讨论】:
-
您正在检查的每个表格列中日期的最小值和最大值(即 MIN() 和 MAX())是多少?
标签: asp.net sql-server linq-to-sql sql-server-2000