【发布时间】:2020-02-28 12:06:02
【问题描述】:
我有 2 个相关的表,它们是组件和零件。
我的组装课:
public class Assembly{
public int Id { get; set; }
public string No{ get; set; }
public string Name { get; set; }
public int? ParentId { get; set; }
public Assembly Parent { get; set; }
public List<Assembly> Children { get; set}
public List<Part> Parts { get; set; }
}
我的零件类:
public class Part{
public int Id { get; set; }
public string No { get; set; }
public string Name { get; set; }
public string Image { get; set; }
public int AssemblyId { get; set;}
public Assembly Assembly { get; set; }
}
我要做的是,首先我在控制器中创建程序集。 然后当我创建一个Assembly时,一个文件上传页面正在打开,然后我上传一个Excell文件并将excell数据映射到我的Part Object作为对我的Assembly对象的引用。(每个部件AssemblyId都是AssemblyId来自路由)
但这有一个很大的问题,因为大多数组件在其零件列表中都有相同的零件或零件。
例如,假设有一个零件,零件编号:555,零件名称:车轴。
假设我要在我的项目中创建 5 个程序集。每个程序集都将从不同的 Excel 文件中导入数据。
每个 Excell 都包含相同的零件,其零件编号:555 和零件名称:Axle,但显然具有不同的 AssemblyId(FK)。
但仍然在我的数据库中,有很多零件与其重复项具有相同的信息,但差别不大的是它们的 AssemblyId 列不同并且引用了 AssemblyId 中的另一个程序集。
我想要实现的是避免这种情况......
我不想重复我的数据。实际上我认为一个解决方案,但我不确定它是否是一个好的解决方案..我可能会做一个“if”语句并检查,同时从 Excell 上传数据,如果数据库中存在具有这些信息的部分,我可能不会上传那个特定的行到表中,并使用已经存在的部分。但我认为这会减慢我的项目。
希望我已经问清楚了..
【问题讨论】:
-
许多部件与其重复项具有相同的信息,但 (...) 它们的 AssemblyId 列不同 这里最大的缺陷是您应该将其实现为多个一对多关系。
-
我想给他们一个特殊的 AssemblyId 标识符,但现在我可以看到这完全是错误的方式......实际上我必须在 NN 关系中尝试这个......谢谢。跨度>
标签: sql .net asp.net-mvc database entity-framework