我的项目是抛出上述错误,因为我的表中的发货日期为空。我正在使用Code First,并且DateTime字段在泛型集和SQL表中都被声明为可为空。我正在使用结果集填充gridview。理想情况下,当ShipDate字段为空时,我想让gridview显示“尚未发货”,但此时,我很高兴能够显示记录。任何帮助是极大的赞赏。这是我正在使用的代码隐藏和上下文类:
public class Order
{
[Key]
public int OrderID { get; set; }
public int CustomerID { get; set; }
public string ShipAddress { get; set; }
public string ShipCity { get; set; }
public string ShipState { get; set; }
public string ShipZip { get; set; }
[ScaffoldColumn(false)]
public string PaymentTransactionID { get; set; }
[ScaffoldColumn(false)]
public System.DateTime OrderDate { get; set; }
public System.DateTime? ShipDate { get; set; }
public virtual Customers Customers { get; set; }
public List<OrderDetail> OrderDetails { get; set; }
}
背后的代码是:
public List<OrderDetail> FetchByOrderID()
{
int myOrderID = CusOrderId;
ProductContext db = new ProductContext();
return db.OrderDetails.Where(
c => c.OrderID == myOrderID).ToList();
}
答案 0 :(得分:4)
尝试通过LINQ获取max(date_column)时遇到上述错误。该列被定义为NOT NULL,并且当查询中没有返回任何行时,它尝试将null分配给表示日期列的DateTime属性。一种解决方案是将日期列更改为NULLable,这将创建实体属性为DateTime类型?
答案 1 :(得分:1)
我使用VB.Net,但有类似的问题。我不知道你是否解决了问题。
但是我将变量声明为Nullable(Of Date)
并且这对我起了作用。我被告知添加“?”做类似的事情,但不幸的是没有为我工作,或者我没有正确地做到这一点。 :O)
private DateTime? _settlementDate {get;set;}
答案 2 :(得分:0)
我遇到了类似的问题,同样的错误。
原来我无法在配置中设置我的ConnectionString。