我有一个列
的表[ChangeDate] [datetime2](7) NOT NULL DEFAULT (getdate())
但是当我使用EF上下文将值插入其中时,它会使用默认值ChangeDate
填充0001-01-01 00:00:00.0000000
,因为我没有在C#代码中为此列指定值。
如何阻止EF在此列中插入任何值?因为我总是希望在插入后在此列中生成GetDate()
。
我使用db first方法。
答案 0 :(得分:2)
简短回答:
修改SQL表列定义(getutcdate())
修改实体框架EDMX列属性:
StoreGeneratedPattern : Computed
答案 1 :(得分:0)
您需要将属性定义为可为空 - DateTime?
public string CreatedBy { get; set; }
public DateTime CreatedDate { get; set; } = DateTime.Now;
public string ModifiedBy { get; set; }
public DateTime? ModifiedDate { get; set; }
请参阅CreatedDate和ModifiedDate
之间的区别答案 2 :(得分:-1)
插入该列以获取当前日期时间时,您可以执行以下操作。 (我想这就是你要找的 - 如果不让我知道,我可以编辑)。
通过这种方式,您将当前的DateTime推送到数据库,因此它将在数据库级别使用getdate()。
数据类型应为datetime,allow nulls,并且在SQL Server中将默认值或绑定设置为getdate()。
MyEntity myEntityInstance = new MyEntity();
myEntity.ChangeDate = DateTime.now;
_db.EntityClass.Add(myEntityInstance);
_db.SaveChanges();
答案 3 :(得分:-1)
您是否在类构造函数中填写了datetime属性?
类似
public YourClassName() {
yourDateTime = DateTime.Now;
}