我正面临与实体框架核心相关的一个问题。我在表中有DateTime字段,如下所示。
表列-datetime2(7)和可为空-False
此列在asp.net核心代码中的Entity上映射到class属性,如下所示。
public DateTime dateCreated { get; set; }
每当我更新(添加没有问题)记录时,表字段就会设置为1/1/0001 12:00 AM。从逻辑上讲,创建日期的字段不应更新。
我尝试更改ModalSnapshot但没有运气
b.Property<DateTime>("dateCreated")
.HasColumnType("datetime2")
**.ValueGeneratedNever();** // Added this line but there is not effect.
任何人都可以请公会我是什么问题。
先谢谢了。
答案 0 :(得分:0)
我发现,我们必须在编辑和更新之间保持价值。
当我们从数据库中检索记录以进行编辑时,我们必须将dateCreated值分配给实体字段。对于更新相同,我们必须传递在获取记录时检索到的相同值。
我之所以没有这样做,是因为我假设实体框架会处理它。由于字段不为空,并且字段中已经有值(在添加记录时添加的值)。我期待它不会触及价值。
此行为是由于数据库中的列不为空,如果我们未明确指定,则实体框架会分配默认值1/1/0001 12:00 AM。
//Added this line in get and update method.
//Date created
Entity Record from db
entity.dateCreated = entity.dateCreated;
谢谢