【问题标题】:Entity Framework: Manually setting entity state reverting values实体框架:手动设置实体状态恢复值
【发布时间】:2012-12-14 18:52:11
【问题描述】:

我以断开连接的方式使用 EF5。我有一个名为Cases 的主表,其中包含定义了关联的各种事物的查找表。例如,SOURCE_ID 列与 Sources 表相关联,该表包含查找。

Cases 的实体中,我有 Source_ID 列以及名为 Source 的关联和导航属性,用于导航到关联的表。

由于我以断开连接的方式使用事物,当我想保存实体时,我手动将状态从Added 设置为Modified。这很有效(遵循 Julie Lermon 书中的一些示例)。

但发生的情况是,如果我将 SOURCE_ID 列更改为不同的值,并且关联的表已加载实体,当我将状态更改为 MODIFIED 时,SOURCE_ID 将恢复为原始值,大概是因为联想吧。

我正在加载关联的SOURCES 表,因为我想显示该表中的其他内容,但我只想更改SOURCE_ID 并保存它。好像不太喜欢。

有什么想法吗?

【问题讨论】:

  • 由于主键关系,这看起来很正常。
  • 所以你是说你修改了数据库中的列?那么当您将实体上的状态设置为已修改并保存更改以将值恢复回数据库中时?还是 source_id 是您模型上的 int 属性?还是 source_id 是源模型上的 PK,而您的案例有源?
  • 这将有助于查看发生这一切的代码。很可能有人(或我)会看到需要稍作改动的行。

标签: c# asp.net .net entity-framework


【解决方案1】:

需要更多代码,但我会试一试。

不只是更新 SOURCE_ID,而是尝试更新您对 Sources 查找的引用。

所以不是......

Case.Source.ID = 1;

也许……

Case.Source = db.Sources.Where(x => x.SOURCE_ID == 1).FirstOrDefault();

(编辑:哦,这是一个月前问的?哎呀。好吧,仍然。)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-05
    • 1970-01-01
    • 2011-10-29
    相关资源
    最近更新 更多