У меня есть следующие сущности, которые были созданы путем обратного инжиниринга таблиц моей базы данных:
public partial class Item
{
public int ItemId{ get; set; }
public int ItemTypeId{ get; set; }
public int ItemCategoryId{ get; set; }
public ItemType ItemType{ get; set; }
public ItemCategory ItemCategory { get; set; }
}
public partial class ItemCategoryType
{
public ItemCategoryType()
{
Items = new HashSet<Item>();
}
public int ItemCategoryTypeId { get; set; }
public string ItemCategoryTypeName { get; set; }
public ICollection<Item> Items { get; set; }
}
public partial class ItemType
{
public ItemType()
{
Items = new HashSet<Item>();
}
public int ItemTypeId { get; set; }
public string ItemTypeName { get; set; }
public ICollection<Item> Items { get; set; }
}
Затем я создал модель Items для создания настройки crud.
Моя проблема в том, что при попытке создать элемент я получаю следующую ошибку:
SqlException: оператор INSERT конфликтует с ограничением FOREIGN KEY "FK_Items_ItemCategoryTypes".Конфликт произошел в базе данных «xxx», таблице «xxx.ItemCategoryTypes», столбце «ItemCategoryTypeId».
Почему это происходит?Еще одна странность заключается в том, что на моих неработающих страницах в стиле скаффолд ItemTypes точно отображается в списке ItemTypeName.Однако категории элементов привязываются к списку с помощью ItemCategoryTypeId вместо ItemCategoryTypeName.
Как структура сущностей узнает, к какому полю привязываться, учитывая, что модели настроены одинаково и полностью похожи друг на друга, за исключением имен полей.
Это несоответствие, вероятно, является причиной ошибки, поскольку структура сущностей пытается вставить запись категории элемента при создании нового элемента.Вместо этого ему следует просто назначить выбранный ItemCategoryId новой создаваемой записи элемента.