EF核心:加载导航属性时更新FK

时间:2020-04-02 12:34:20

标签: entity-framework-core

请考虑以下类,该类由外键和相应的导航属性组成。

class MyClass
{
    public long FkId { get; set; }
    public MyOtherClass FkNavigationProperty { get; set; }
}

我的更新问题

MyClass myUpdate =
    new MyClass
    {
        FkId = 5, //the new value which i want to save
        FkNavigationProperty = new MyOtherClass { Id = 3 } //the old value that was loaded with the entity
    }

context.Update(myUpdate);
context.SaveChanges();

问题

这将导致保存的MyClass实体的FK值为3,而不是所需的5。

为什么我有这个问题

通常,我将确保在更新的实体上未加载导航属性。 但是目前无法确定。

我想知道的

在这种情况下的最佳做法是什么?

  1. 将导航属性设置为null并仅设置外键ID?
  2. 在实体和导航属性中同时设置外键ID吗?
  3. 加载所需的外键实体并将其设置为导航属性(将外键保留在旧值上)吗?
  4. 其他主张?
  5. EDIT:导航属性“胜过”外键属性是否总是这样? (如果是,这是否记录在某处?)

谢谢您的帮助!

干杯,迈克

0 个答案:

没有答案