将属性标记为"在添加或更新时生成的值"在实体框架?

时间:2018-03-06 11:32:58

标签: c# entity-framework entity-framework-core

Microsoft Ents Framework文档显示,您可以将类型的属性标记为"在添加或更新时生成的值"。因此,在我希望在更新行时为LastUpdated列指定当前日期的情况下,我可以像这样标记该属性:

enter image description here

但是正如你所看到的,它给出了一个警告,即EF并没有真正实现它。警告中的该链接明确告诉我们,如果我们想要在更新行时将Date列设置为当前日期,那么我们需要自己在数据库中创建触发器实现它。

那么意味着是什么,&#34;让EF知道为添加或更新的实体生成的值&#34;?< / p>

2 个答案:

答案 0 :(得分:3)

你读错了。它说

  

不保证 EF会......

它没有说&#34; EF不会对此做任何事情&#34;。例如,如果您正在使用Code First,并将PK设置为

[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }

EF实际上会使用Identity(在SQL Server上)设置该列。

这也意味着EF不会在更新和插入时发送该值,因为数据库应该填充这些值。

请记住,EF与许多提供商合作,并且由每个提供商决定是否提供这种可能性,这就是为什么它不能得到保证。

答案 1 :(得分:0)

嗯,“不保证”这位确实有点模糊。

但是你想要的是让EF了解它应该在Select中包含这些列但不包括在Update或Insert中。