實體框架代碼首先可以爲以下POCO生成DB。實體框架代碼優先:FOREIGN KEY約束可能導致循環或多個級聯路徑
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; }
}
我想通過ID字段而不是整個「Item」類建立與第一個和第二個項目的關係。所以:
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; }
}
也有效。 編輯:這實際上並沒有工作。只需生成其他FirstItem_Id1和SecontItem_Id2列。
但只是改變像這樣的外鍵屬性FirstItemId,SecondItemId,(不帶下劃線):
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; }
}
導致以下異常。
{"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."}
爲什麼?我能做些什麼來避免這種例外。
這個替代方案幫助我更好http://stackoverflow.com/questions/19373310/introducing-foreign-key-constraint-may-cause-cycles-or-multiple-cascade-paths – Mzn