Я полагаю, это потому, что у вас есть три свойства навигации от Tablets
до Category
:
public virtual Category Category1 { set; get; }
public virtual Category Category2 { set; get; }
public virtual Category Category3 { set; get; }
Но Tablets
имеет только одно categoryID
. Итак, как EF может определить, принадлежит ли categoryID
к Category1
, Category2
или Category3
, если вы специально не отобразите его?
То же самое относится к свойству ICollection<Tablets> tablets
Category
- это набор планшетов, где Category
равен Category1
, Category2
или Category3
?
Я не совсем уверен, каковы ваши потребности, но вы можете попробовать добавить эти свойства в Tablets
:
public int category1ID { set; get; }
public int category2ID { set; get; }
public int category3ID { set; get; }
и удалите существующее свойство categoryID
Тогда вам также необходимо добавить соответствующие коллекции в Category
:
public ICollection<Tablets> tablets1 { set; get; }
public ICollection<Tablets> tablets2 { set; get; }
public ICollection<Tablets> tablets3 { set; get; }
Для каждой записи Category
эти коллекции будут содержать отношения, в которых она сопоставляется со свойством Category1
, Category2
или Category3
записи Tablets
соответственно.
В порядке чтобы это работало, вам, вероятно, потребуется вручную сопоставить все эти свойства (либо с атрибутами, либо в методе OnModelCreating
, как упоминается в ошибке).
Однако я думаю, что вам будет лучше, если таблица соединения «многие ко многим», например TabletCategories
, так как этот текущий дизайн похож Это может вызвать больше проблем в будущем.
Примерно так можно указать дополнительную информацию о конкретных отношениях (при необходимости):
public class TabletCategory
{
public int TabletId { set; get; }
public int CategoryId { set; set; }
}
Ссылка: https://docs.microsoft.com/en-us/ef/core/modeling/relationships