Ну, как говорится в исключении: у вас нет ключа, определенного в вашей сущности cgArmorialAward
. У каждой сущности должен быть ключ. Измените его на следующее:
public class cgArmorialAward
{
[Key, Column(Order = 0)]
[ForeignKey("Armorial")]
public Guid ArmorialID { get; set; }
[Key, Column(Order = 1)]
[ForeignKey("Award")]
public Guid AwardID { get; set; }
public cgArmorial Armorial { get; set; }
public cgAward Award { get; set; }
public DateTime AwardedOn { get; set; }
}
Поля в составном ключе являются внешними ключами для двух других таблиц одновременно, следовательно, атрибут ForeignKey
. (Я не уверен, что соглашения определят это автоматически, потому что у вас есть нестандартные имена («cgXXX» для классов и «XXXId» для свойств внешнего ключа). С другой стороны, имена свойств Armorial
и Award
соответствовать именам свойств внешнего ключа. Я не уверен, что соглашения EF будут учитывать это. Поэтому, возможно, атрибут ForeignKey
не является необходимым, но по крайней мере он не ошибается.)