假设我有一个Car
界面。每个Car
都有一组零件作为ICollection<Part>
。除了类引用之外,该Part
实体还有一个 ID 和一个可选的外键引用。CarId
Public Car Car{ get; set;}
所以这是有趣的部分。假设我有一个按Part ID
. 我Part
通过访问存储库来提供表格 a 。form.Part = repos.Retrieve(PartID)
. 现在表单具有对零件的引用(以及零件通过零件所属的车辆)。我通过使用创建表单context.Forms.Add(form);
数据库创建了一个DUPLICATE车辆和零件,具有自己的单独 ID,而不是引用已经存在的 ID。
有人可以解释为什么会这样吗?
编辑
想要它们的人的类示例:
public class Form
{
public int ID { get; set;}
public Part Part { get; set;} // Reference to Part
public int? PartId { get; set; } // Foreign Key to Part ID
}
public class Car : Vehicle
{
public int ID { get; set;}
public virtual ICollection<Part> Parts { get; set;} //Each car has parts
}
public class Part
{
public int ID { get; set;}
public Car Car { get; set;} // Reference to Car
public int? CarId { get; set; } // Foreign Key to Car
}
将导致此故障的代码。假设 Part 和 Car 已经存在于数据库中:
form Form = new form();
form.Part = partRepository.Retrieve(5); //gets part with id = 5
context.formRepository.Add(form); // new part created, duplicate of part #5 but with the next available id.