C#-实体框架更新关系

时间:2019-12-04 22:37:14

标签: c# entity-framework entity-framework-core

我将C#与ASP.NET Core和Entity Framework一起使用来创建RESTful API。 一切运行正常,但是有一种情况我正在尝试解决。

说我下面有这三个班。

public class Car
{
    [Key]
    public int Id { get; set; }
    public int Year { get; set; }
}
public class Option
{
    [Key]
    public int Id { get; set; }
    public int Name { get; set; }
}
public class CarOption
{
    [Key]
    public int Id { get; set; }
    public int Car { get; set; }
    public int Option { get; set; }
    public int Value { get; set; }
}

问题是当我尝试更新CarOption时,实体框架也会更新相关对象。 我期望只有关系会被更新。这意味着,该框架将丢弃 Option 对象的其他值,而仅使用主键更新 CarOption 表。

例如: 假设以下代码是API生成的JSON的示例。

{
    "id":1
    "Car":{
        "id":1,
        "year":2020
    },
    "option":{
        "id":1,
        "label":"gear"
    },
    "value":"manual"
}

如果我更改有效载荷并将选项部分更新为

{
...
    "option":{
        "id":1,
        "label":"gear2"
    },
...
}

,即使存在属性id,这表示对象已经存在,实体框架也将使用新值更新表 Option 。 我正在使用DbContext.CarOption.Update(*payload*)

有什么解决方案可以避免这种行为?

0 个答案:

没有答案