Microsoft Ents Framework文档显示您可以将类型的属性标记为“在添加或更新时生成的值”。因此,在我希望LastUpdated
列在更新行时获得当前日期的情况下,我可以像这样标记该属性:
但正如你所看到的,它给出了一个警告,即EF不会真正实现它。警告后面的链接明确告诉我们,如果我们想在每次更新行时将Date
列设置为当前日期,我们需要自己在数据库中创建触发器以实现它。
那么它意味着什么,以及“让EF知道为增加或更新的实体生成价值”的重点是什么?
好吧,“不保证”一点确实有点模糊。
但是你想要的是让EF理解它应该在Select中包含这些列而不是在Update或Insert中。
你读错了。它说
它不保证EF会......
它并没有说“EF不会对此做任何事情”。例如,如果您正在使用Code First,并将PK设置为
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
EF实际上将使用Identity(在SQL Server上)设置该列。
这也意味着EF不会在更新和插入时发送该值,因为数据库应该填充这些值。
请记住,EF与许多提供商合作,并且由每个提供商提供这种可能性,这就是为什么它不能保证。