实体框架SaveChanges()不插入DateTime?当它';s指定

本文关键字:当它 指定 DateTime SaveChanges 框架 插入 实体 | 更新日期: 2023-09-27 18:01:07

我有一个具有DateTime? CreatedDate { get; set; }属性的类MyEntity

所以我创建了我的实体:

MyEntity e = new MyEntity { Id = 0, ..., CreatedDate = DateTime.Now };
db.MyEntities.Add(e);
db.SaveChanges();

我在数据库中查看,CreatedDate字段为空。为什么?我在添加到上下文之前就指定了它!

尝试了其他人关于设置CreatedDate = DateTime.Now as DateTime?的建议;甚至CreatedDate = DateTime.Now as Nullable<DateTime>;相同的结果-插入为空。

实体框架SaveChanges()不插入DateTime?当它';s指定

问题可能是在代码的第一行中,您声明的是Entity类型的新类而不是MyEntity吗?

尝试。。

MyEntity e = new MyEntity { Id = 0, ..., CreatedDate = DateTime.Now };
db.MyEntities.Add(e);
db.SaveChanges();

CreatedDate = DateTime.Now.Date

将createddate设置为日期

我之前没有告诉你们,但我已经装饰了DateTime?使用[DatabaseGenerated(DatabaseGeneratedOption.Computed)]创建日期,我认为这不会影响创建或更新。

如果我有这个属性,那么在C#中设置CreateDate的任何操作都将导致null。为了解决null问题,我必须转到Configuration.cs和write c => c.DateTime(defaultSqlValue: "GETDATE()")以获得相应的列定义。解决了这个问题。

或者,我可以去掉注释,不接触Configuration.cs文件。

在实体实例创建后设置断点并检查属性。CreatedDate设置正确吗?