阻止实体框架插入默认值

时间:2017-03-17 14:47:53

标签: c# sql-server entity-framework

我有一个列

的表
[ChangeDate] [datetime2](7) NOT NULL DEFAULT (getdate())

但是当我使用EF上下文将值插入其中时,它会使用默认值ChangeDate填充0001-01-01 00:00:00.0000000,因为我没有在C#代码中为此列指定值。

如何阻止EF在此列中插入任何值?因为我总是希望在插入后在此列中生成GetDate()

我使用db first方法。

4 个答案:

答案 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;
}
相关问题