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