7

我有一个表DateCreatedDateUpdated列,并使用实体框架插入/更新值到数据库。实体框架DateTime列 - GetDate()值插入

我需要DateCreated列,以获得SQL Server的GetDate()值只有插入。

DateUpdated列值始终应更新,当前值为GetDate()插入和更新两者。

对于DateCreated列,我已经设置了StoreGeneratedPattern="Computed",并且在SQL Server表上我已经将该列的默认值设置为GetDate(),这很好地按预期工作。

对于DateUpdated列,我找不到每次更新条目时自动设置GetDate()值的方法。只有在插入条目时才设置此值。

可能有人阐明这一些轻。

+0

你试过'StoreGeneratedPattern =“身份”'? –

+1

为什么不getdate作为datecreated工作的数据库默认值?它不应该覆盖它,如果你不更新它... –

+0

我同意DMoses - 默认值仅填充在行创作。 –

回答

7

如果您想要DateUpdated由数据库设置,您可以使用触发器将值设置为getdate()。我相信,如果你DateUpdated设置StoreGeneratedPattern="Computed" EF也将获得由触发器设置的值。

仅供参考,您的触发会是这个样子(你必须根据你的表的PK更新):

create trigger MyTable_UpdatedTrigger 
on MyTable 
for update 
as 
begin 
    update t set DateUpdated = getdate() 
    from MyTable t 
     join inserted i on t.Id = i.Id 
end