Mã khung thực thể Đầu tiên có thể tạo DB cho các POCO sau đây.Mã khuôn khổ thực thể đầu tiên: Ràng buộc KEY NGOẠI HỐI có thể gây ra các chu kỳ hoặc nhiều đường dẫn xếp tầng
public class Item {
public int Id { get; set; }
public string Name { get; set; }
}
public class ItemPair {
public int Id { get; set; }
public virtual Item FirstItem { get; set; }
public virtual Item SecondItem { get; set; }
}
Tôi muốn thiết lập mối quan hệ với mục Thứ nhất và Thứ hai thông qua các trường ID chứ không phải toàn bộ lớp "Mục". Vì vậy:
public class ItemPair {
public int Id { get; set; }
public virtual Item FirstItem { get; set; }
public int FirstItem_Id { get; set; }
public virtual Item SecondItem { get; set; }
public int SecondItem_Id { get; set; }
}
cũng hoạt động. Chỉnh sửa: Điều này không thực sự hiệu quả. Chỉ cần tạo thêm cột FirstItem_Id1 và SecontItem_Id2.
Nhưng chỉ cần thay đổi các thuộc tính chính nước ngoài để FirstItemId, SecondItemId, (không có gạch dưới) như vậy:
public class ItemPair {
public int Id { get; set; }
public virtual Item FirstItem { get; set; }
public int FirstItemId { get; set; }
public virtual Item SecondItem { get; set; }
public int SecondItemId { get; set; }
}
kết quả trong ngoại lệ sau đây.
{"Introducing FOREIGN KEY constraint 'ItemPair_SecondItem' on table 'ItemPair' may cause
cycles or multiple cascade paths. Specify ON DELETE NO ACTION or ON UPDATE NO ACTION,
or modify other FOREIGN KEY constraints.\r\nCould not create constraint.
See previous errors."}
Tại sao? Và tôi có thể làm gì để tránh ngoại lệ này.
Phương án này đã giúp tôi tốt hơn http://stackoverflow.com/questions/19373310/introducing-foreign-key-constraint-may-cause-cycles-or-multiple-cascade-paths – Mzn