Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Entity framework core EF核心:加载导航属性时更新FK_Entity Framework Core - Fatal编程技术网

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

Entity framework core EF核心:加载导航属性时更新FK,entity-framework-core,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 FkNa

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

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

我为什么会有这个问题

通常,我会确保更新的实体上没有加载导航属性。 但目前,这是不可能确定的

我想知道的

针对这种情况的最佳做法是什么

  • 是否将导航属性设置为null并仅设置外键id
  • 在实体和导航属性中同时设置外键id
  • 加载所需的外键实体并将其设置为导航属性(将外键保留在旧值上)
  • 其他主张
  • 编辑:导航属性总是比外键属性“赢”吗?(如果是,是否有文件记录?)
  • 谢谢你的帮助

    干杯,迈克