Może się to zdarzyć, jeśli masz odwrócone właściwości nawigacji w contractors klasa, jak tak:
public partial class contractors
{
//...
public virtual ICollection<a> aCollection { get; set; }
public virtual ICollection<a> aCollection1 { get; set; }
}
W tym przypadku EF nie będzie wiedział, który należy do której właściwości nawigacji w klasie a i przyjmij cztery relacje zamiast dwóch (lub trzy zamiast dwóch, jeśli masz tylko jedną kolekcję). Te dodatkowe relacje będą miały oddzielny klucz obcy, a jednym z nich jest contractors_id . Jeśli nie istnieje w bazie danych, otrzymasz wyjątek.
Możesz rozwiązać problem, stosując InverseProperty atrybut w klasie a :
[InverseProperty("aCollection")]
public virtual contractors contractors { get; set; }
[InverseProperty("aCollection1")]
public virtual contractors contractors1 { get; set; }