【问题标题】:Entity Framework DateTime column - GetDate() value Insertion实体框架日期时间列 - GetDate() 值插入
【发布时间】:2011-12-09 15:39:20
【问题描述】:

我有一个包含DateCreatedDateUpdated 列的表,并使用实体框架向数据库插入/更新值。

我需要 DateCreated 列来获取 SQL Server 的 GetDate() 值(仅在插入时)。

DateUpdated 列值应始终在插入时使用当前GetDate() 值更新,并同时更新两者。

对于DateCreated 列,我设置了StoreGeneratedPattern="Computed",并且在SQL Server 表上我将该列的默认值设置为GetDate(),它可以正常工作。

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

有人能解释一下吗?

【问题讨论】:

  • 你试过StoreGeneratedPattern="Identity"吗?
  • 为什么 getdate 不作为 datecreated 工作的数据库默认值?如果您不更新它,它不应该覆盖它...
  • 我同意 DMoses - 默认值仅在创建行时填充。
  • @DMosses,马克斯塔福德,是的,你们俩都是正确的。 db 默认值仅在插入条目但不更新时设置。实际上,我想要的是“DateUpdated”字段的解决方案,而不是“DateCreated”字段的解决方案。这完全是我的错。我现在已经重新措辞了这个问题。

标签: entity-framework entity-framework-4 entity-framework-4.1


【解决方案1】:

如果您希望数据库设置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

【讨论】:

    猜你喜欢
    • 2014-05-04
    • 1970-01-01
    • 1970-01-01
    • 2014-04-09
    • 2014-01-14
    • 2011-06-06
    • 2018-04-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多