C# 和实体框架:停止添加重复项

时间:2021-06-12 16:05:38

标签: c# entity-framework

我有课

public class SetParts
{
    public int id { get; set; }
    public Part part { get; set; }
    public Color color { get; set; }
    public int quantity { get; set; }
}

部分是

public class Part
{
    public int id { get; set; }
    public string part_num  { get; set; }
    public string name { get; set; }
}

和颜色

public class Color
{ 
    public int id { get; set; }
    public string name { get; set; }
    public string rgb { get; set; }
}

我从“SetParts”的 API 中获得一个列表,但不同的列表可以包含与另一个“SetPart”相同的“颜色”(同样适用于“Part”)。

我遇到的问题是每次添加“SetParts”时,它都会复制颜色....和零件

我怎样才能轻松阻止这种情况?

编辑: 检索到的每个 SetParts 都是唯一的,但它们可以包含相同的颜色和零件 在这种情况下 Part 和 Color 是相同的,(相同的 id)

using (var db = new DBContext())
{
    db.AddRange(data); 
    db.SaveChanges();
}

data 是通过 API 获取的 List

1 个答案:

答案 0 :(得分:0)

<块引用>

我怎样才能轻松阻止这种情况?

从数据库中检索现有颜色或使用现有颜色的 ID 并设置(对于通过在子端具有 ColorID 属性映射的类)

现在您可能只是让 API 提供一个带有蓝色的 SetParts 并保存它,然后另一个带有另一种蓝色的 SetParts 并保存它。

它们不会是重复的(它们会有不同的 ID),但它们可能都是蓝色的。如果要使用现有颜色(例如 id=1 的蓝色),请在保存之前指定该现有颜色

相关问题