Entity Framework Code First может генерировать DB для следующих POCO.
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; }
}
Я бы хотел установить связь с Первым и Вторым предметом с помощью полей идентификатора, а не целого класса «Предмет». Итак:
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."}
Почему? И что я могу сделать, чтобы избежать этого исключения.