在实体框架中将属性标记为“在添加或更新时生成的值”有什么意义?

问题描述 投票:1回答:2

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

enter image description here

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

那么它意味着什么,以及“让EF知道为增加或更新的实体生成价值”的重点是什么?

c# entity-framework entity-framework-core
2个回答
0
投票

好吧,“不保证”一点确实有点模糊。

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


3
投票

你读错了。它说

它不保证EF会......

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

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

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.