C# 如何修复EntityFrameworkCore.DbUpdateException?

C# 如何修复EntityFrameworkCore.DbUpdateException?,c#,entity-framework,C#,Entity Framework,我试图使用EF更新记录,但出现以下异常: 内部异常1: SqlException:无法将值NULL插入表“PAS_DEV.dbo.RepairOrder”的“updateDate”列中;列不允许空值。更新失败。 声明已终止 updateDateianotNull在数据库表中。我正在传递dateTime.now值,所以我不确定为什么EF认为它为空 代码: public class RepairOrder:PasBase { [Key] public long RepairOrder

我试图使用
EF
更新记录,但出现以下异常:

内部异常1: SqlException:无法将值NULL插入表“PAS_DEV.dbo.RepairOrder”的“updateDate”列中;列不允许空值。更新失败。 声明已终止

updateDate
ia
notNull
在数据库表中。我正在传递
dateTime.now
值,所以我不确定为什么EF认为它为空

代码:

public class RepairOrder:PasBase
{
    [Key]
    public long RepairOrderId { get; set; }
    public System.DateTime UpdatedDate { get; set; 
}

if (_context.RepairOrder.Any(o => o.RepairOrderId == poViewModel.RepairOrderId))
{
    var actionobject = _context.RepairOrder.Where(a => a.RepairOrderId == poViewModel.RepairOrderId).SingleOrDefault();
    actionobject.UpdatedDate = DateTime.Now;
    _context.RepairOrder.Update(actionobject);
    _context.SaveChanges();
    return Ok(actionobject);
}
表格结构:

public class RepairOrder:PasBase
{
    [Key]
    public long RepairOrderId { get; set; }
    public System.DateTime UpdatedDate { get; set; 
}

if (_context.RepairOrder.Any(o => o.RepairOrderId == poViewModel.RepairOrderId))
{
    var actionobject = _context.RepairOrder.Where(a => a.RepairOrderId == poViewModel.RepairOrderId).SingleOrDefault();
    actionobject.UpdatedDate = DateTime.Now;
    _context.RepairOrder.Update(actionobject);
    _context.SaveChanges();
    return Ok(actionobject);
}
您是否尝试过:

if (actionobject != null)
{
    actionobject.UpdatedDate = DateTime.Now;
    _context.Entry(actionobject).State = EntityState.Modified;
    _context.SaveChanges();
您是否尝试过:

if (actionobject != null)
{
    actionobject.UpdatedDate = DateTime.Now;
    _context.Entry(actionobject).State = EntityState.Modified;
    _context.SaveChanges();


尝试将日志记录设置为debug,然后您将看到生成的查询。也许这会让你了解场景背后发生的事情。你真的需要这一行吗
\u context.RepairOrder.Update(actionobject)
actionobject
已经是上下文的一部分,因此您可以简单地调用
SaveChanges
。试着评论一下。@jcruz这很奇怪。您的建议有效,但混淆的是,我有两个值
createdDate
updateDate
,其中只有
createdDate
正在更新。我不确定
updateDate
发生了什么。数据类型相同,但@jcruz仍然发现了问题。在这里,我继承了另一个类,该类具有null
updateDate
。这就是问题所在。我不需要把它去掉,像个魔咒一样工作。感谢您尝试将日志记录设置为调试,然后您将看到生成的查询。也许这会让你了解场景背后发生的事情。你真的需要这一行吗
\u context.RepairOrder.Update(actionobject)
actionobject
已经是上下文的一部分,因此您可以简单地调用
SaveChanges
。试着评论一下。@jcruz这很奇怪。您的建议有效,但混淆的是,我有两个值
createdDate
updateDate
,其中只有
createdDate
正在更新。我不确定
updateDate
发生了什么。数据类型相同,但@jcruz仍然发现了问题。在这里,我继承了另一个类,该类具有null
updateDate
。这就是问题所在。我不需要把它去掉,像个魔咒一样工作。谢谢,您不需要它,因为
actionobject
已附加到上下文中。@CSharper在更新和保存之前,您可能需要对actionobject进行空检查。@PateeGutee Here
actionObjrct
不为空。所有需要的值都可用。可能只是一个输入错误,但UpdateDate属性没有右大括号:@PateeGutee这是一个输入错误。不需要这样做,因为
actionobject
已附加到上下文。@CSharper在更新和保存之前,您可能应该对actionobject进行空检查。@PateeGutee
actionObjrct
不为空。所有需要的值都可用。可能只是一个输入错误,但UpdateDate属性没有右大括号:@PateeGutee这是一个输入错误。