เอนทิตีทั้งสองนี้มีความสัมพันธ์แบบหนึ่งต่อหลายคน (สร้างโดยรหัส API แรกได้อย่างคล่องแคล่ว)
public class Parent
{
public Parent()
{
this.Children = new List<Child>();
}
public int Id { get; set; }
public virtual ICollection<Child> Children { get; set; }
}
public class Child
{
public int Id { get; set; }
public int ParentId { get; set; }
public string Data { get; set; }
}
ในตัวควบคุม WebApi ของฉันฉันมีการดำเนินการเพื่อสร้างเอนทิตีหลัก (ซึ่งทำงานได้ดี) และอัปเดตเอนทิตีหลัก (ซึ่งมีปัญหา) การดำเนินการอัพเดตดูเหมือนว่า:
public void Update(UpdateParentModel model)
{
//what should be done here?
}
ปัจจุบันฉันมีสองแนวคิด:
รับเอนทิตีพาเรนต์ที่ถูกติดตามที่ตั้งชื่อ
existing
โดยmodel.Id
และกำหนดค่าในmodel
แต่ละรายการให้กับเอนทิตี ฟังดูงี่เง่า และในmodel.Children
ฉันไม่รู้ว่าลูกคนไหนเป็นลูกใหม่ลูกคนไหนที่ถูกปรับเปลี่ยน (หรือลบไป)สร้างเอนทิตีพาเรนต์ใหม่ผ่าน
model
และแนบไปกับ DbContext และบันทึก แต่ DbContext จะทราบสถานะของเด็กอย่างไร (ใหม่เพิ่ม / ลบ / แก้ไข)
วิธีที่ถูกต้องในการใช้คุณสมบัตินี้คืออะไร?