Я устанавливаю .NET Core API. Мое приложение разделено на 3 слоя:
- Доступ к данным
- Бизнес-логика / Услуги
- API
У меня проблемыдобавлены связанные объекты с помощью метода API. Допустим, у меня есть следующие классы.
public class Part
{
[Key]public int Id {get; set;}
public string Name {get; set;}
public string ICollection<PartAttribute> PartAttributes{get; set;}
}
public class PartAttribute
{
[Key]public int Id {get; set;}
public string Name {get; set;}
public string Value {get; set;}
}
И следующие методы для взаимодействия с БД - контекст - это EF DbContext:
public virtual void Add(T entity)
{
Context.Set<T>()
.Add(entity);
}
У меня проблемы с добавлением Part, в которой уже есть атрибуты PartAttributes, если я отправляю следующий JSON через API (при условии, что следующая запись в PartAttributes уже существует)
{
"Name":"Example1",
"PartAttributes":[
{
"attributeId":1,
"name":"Color",
"value":"black"
}]
}
Я получаю следующее исключение: «Не удается вставить явное значение для столбца идентификации в таблице« PartAttributes », когда IDENTITY_INSERTустановлено на OFF. "- Это приводит меня к выводу, что EF не распознает существующую запись и пытается вставить ее как новую. Это приводит к сбою из-за установки вставки идентификатора в самом SQL Server.
Чего я хотел бы добиться, так это чтобы существующие объекты распознавались и EF не пытался вставить существующие атрибуты в качестве новых записей в базу данных. Каковы наилучшие методы для достижения такого поведения?