我有一个带有Table成员的自定义DataContext ...
条目定义为......
[Table(Name="Entry")]
public class Entry
{
[Column]
public DateTime MyDate { get; set; }
}
MyDate
表中的Entry
字段可以为NULL。
我有一个非常简单的Linq查询,它检索Entry中的所有记录但是当遇到NULL MyDate字段时,我收到System.InvalidOperationException错误,其中包含以下详细信息......
无法将null值分配给System.DateTime类型的成员,该类型是不可为空的值类型。
当遇到NULL时,有没有办法设置默认的DateTime(例如0刻度)?
答案 0 :(得分:3)
如果数据库中的date为NULL,则不应在应用程序中将其替换为0。当你将0写回db时,它可能会失败或只是将值更改为无效。
您可以将DateTime替换为DateTime?:
[Table(Name="Entry")]
public class Entry
{
[Column]
public DateTime? MyDate { get; set; }
}
添加?使属性Nullable。由于它可以在数据库中为空,因此它应该在您的模型中可以为空。
答案 1 :(得分:2)
在这种情况下,我首选的方法是可以为空的DateTime:
[Column]
public DateTime? MyDate { get; set; }
或者:
public Nullable<DateTime> MyDate { get; set; }
这不是一种选择吗?
答案 2 :(得分:0)
您能将其声明为public DateTime? MyDate { get; set; }
吗?
如果你不希望它实际上是null,你可以这样做:
private DateTime _MyDate;
public DateTime? MyDate
{
get { return _MyDate; }
set { _MyDate = value.GetValueOrDefault(); }
}
只要DB中的值为NULL,这将为您提供0 Ticks。