Проблема в том, что здесь недопустимая аннотация ForeignKey
[ForeignKey("PID")]
[Column("PID")]
[Display(Name = "PID:")]
public int PID{ get; set; }
ForeignKey
- это запутанный атрибут, поскольку он меняет значение аргумента в зависимости от того, где он применяется.При применении к свойству FK оно указывает имя свойства навигации.А при применении к свойству навигации оно указывает имя свойства FK.
В вашем случае оно применяется к свойству FK, но указывает то же имя свойства, поэтому оно просто игнорируется, а EF использует стандартное значение по умолчанию.имя свойства FK, связанного с отношением List<OtherClass> OtherClassList
, поэтому вы получаете несуществующий столбец.
Чтобы устранить проблему, примените атрибут к свойству навигации другого класса (поскольку у вас нет свойства навигации в классе, которому нужен FK):
[ForeignKey(nameof(OtherClass.PID))]
public List<OtherClass> OtherClassList{ get; set; }
или (предпочтительно) настроить его с помощью свободного API:
modelBuilder.Entity<ClassName>()
.HasMany(e => e.OtherClassList)
.WithOne()
.HasForeignKey(e => e.PID);
Если у вас есть свойство ссылочной навигации, в дополнение к вышеупомянутому решению для аннотирования данных, вы также можете использовать
[ForeignKey(nameof(ClassName))]
[Column("PID")]
[Display(Name = "PID:")]
public int PID{ get; set; }
или
[ForeignKey(nameof(PID))]
public ClassName ClassName { get; set; }
или свободный API .WithOne()
должен быть изменен на .WithOne(e => e.ClassName)
.