【问题标题】:Entity Framework Core not updating models after a SQL Server trigger updates and a new query of the databaseSQL Server 触发更新和数据库的新查询后,Entity Framework Core 不更新模型
【发布时间】:2020-11-27 11:06:52
【问题描述】:

我遇到了一个问题,即在需要数据库后模型没有更新到最新版本(可能是由于更改跟踪?)。

我将模型添加到 dbset 并通过上下文保存它。此时有一个服务器端触发器会更新一个带有指向另一个表 pk 列的链接的字段。

添加记录后,我需要知道更新列中的值。我重新查询数据库,SQL Server 跟踪显示返回了新值,但模型值没有更新。

我已经尝试去除类似于this answer. 的实体,但这不起作用。

我已经通过从服务范围工厂创建一个新范围并创建我的上下文的第二个实例来解决它,但想知道为什么会发生这种情况以及如何避免它(我无法控制数据库,所以我可悲的是,无法删除触发器并在代码中执行所有操作)。

谢谢

保罗

【问题讨论】:

  • 可以刷新缓存的对象实例(或不使用跟踪查询)以获取更新的值,但在您的情况下将属性配置为 Value generated on add or update 不是更好(文档示例显示的触发器用法与您的相似)?这样您就不需要手动重新查询,EFC 会自动为您完成。
  • 谢谢,这正是我想要的!

标签: sql-server caching entity-framework-core change-tracking


【解决方案1】:

Ivans 在 cmets 中的回答会解决这个问题。用[DatabaseGenerated(DatabaseGeneratedOption.Computed)]注释模型中的属性

自动处理一切。

感谢您的帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-11
    • 2019-09-28
    • 1970-01-01
    • 2016-11-03
    • 1970-01-01
    • 2021-04-21
    • 2014-05-02
    相关资源
    最近更新 更多