【发布时间】:2020-05-09 00:15:58
【问题描述】:
我正在做一个简单的更新(使用带有 SQL 后端的 EF Core 3.1.2)并且无法了解为什么一个字段无法发送到数据库。
我有一个更新调用,在那里我可以看到我想要发送的 DateModified 的值:
但是,使用 SQL Profiler,我可以看到这是实际发送的内容,并且 DateModified 字段根本没有发送到 SQL:
这是试图发送的对象:
public class AVO : BasePropertiesWithID
{
//[Authorize(Policy = "AllEmployees")]
[ForeignKey("DivisionID")]
public int DivisionID { get; set; }
[Required]
public int AccountNumber { get; set; }
[Required]
public string CustomerName { get; set; }
[Required]
public string Comments { get; set; }
public bool IsActive { get; set; }
public DateTime? StartDate { get; set; }
public DateTime? EndDate { get; set; }
[UseFiltering]
[UseSorting]
public virtual Division Division { get; set; }
}
这是包含 DateModified 字段(未发送)和正在发送的 DateInserted 字段的基类:
public class BasePropertiesWithID
{
[Key]
[Column(Order = 1)]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int ID { get; set; }
[Required]
[Column(Order = 9990)]
[DefaultValue("autoProcess")]
public string InsertedBy { get; set; }
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:MM/dd/yyyy}")]
[Required]
[Column(Order = 9991)]
public DateTime DateInserted { get; set; }
[Required]
[Column(Order = 9992)]
[DefaultValue("autoProcess")]
public string ModifiedBy { get; set; }
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:MM/dd/yyyy}")]
[Required]
[Column(Order = 9993)]
public DateTime DateModified { get; set; }
}
我已经使用这个基类很长时间了,没有遇到任何问题,也没有遇到过这种情况。我搜索信息没有成功,虽然我确实找到了这个Why is EF Core Update failing to update a modified column,但它对我没有帮助。
为什么一个字段甚至无法发送?谁能提供为什么或如何解决这个问题?谢谢!
【问题讨论】:
-
为了清楚起见,我相信你使用的是 ef-6 而不是核心......你应该这样说......
-
@Seabizkit 我正在使用 EF Core 3.1.2 进行说明
-
对不起,我认为没有相关但
[Column(Order = 9992)]在核心 github.com/dotnet/efcore/issues/11314 中不起作用。回到您的问题,最有趣的外观 100% 正确我的猜测是删除配置中的行... 这是用于 DataModfied 的 ,valueGeneratedOnAddOrUpdated... 看看会发生什么 -
哇。谢谢(你的)信息。看起来像最近正在调查的问题。 12 天前添加了一种解决方法。我将深入挖掘并以我最终实施的内容做出回应。谢谢@Seabizkit!
标签: .net entity-framework