Вы не можете вручную установить значение столбца Identity (Auto Increment).
Здесь, в приведенном ниже примере PurchaseId - это столбец Identity.
purchase.PurchaseId = 6;
_dbContext.Purchases.Add(purchase);
_dbContext.SaveChanges();
При сохранении изменений в база данных, которую EF Core выдает Microsoft.EntityFrameworkCore.DbUpdateException
с ошибкой Cannot insert explicit value for identity column in table 'Purchases' when IDENTITY_INSERT is set to OFF.
.
Таким образом, по умолчанию вы не можете присвоить значение.
Но здесь проблема не в этом.
Более серьезная проблема заключается в том, что вы открываете классы домена своему клиенту. Этот недостаток в дизайне API может привести не только к этой проблеме.
Вы должны создать DTO, например CreateItemDTO, единственная обязанность которого - содержать все методы, необходимые для создания элемента в базе данных.
Точно так же вы не должны раскрывать класс Item в запросе GET. Это приводит к проблеме, когда отображаются столбцы, связанные с API, которые не предназначены для клиентов. Создайте GetItemDTO, который будет содержать только информацию, которая важна для запроса GET.
CreateItemDTO
public class CreateItemDTO
{
[Required(ErrorMessage = "You must provide a name.")]
[MaxLength(255)]
public string Name { get; set; }
}
Чтение Предоставление моделей домена через API для получения дополнительной информации.