После обновления до .Net Core 3.1 один из моих объектов выдает ошибку, если я пытаюсь обновить его с ошибкой «не удается обновить столбец идентификаторов в Entity Framework Core». Это происходит в присоединенном или отсоединенном состоянии.
Вот моя свободная конфигурация
modelBuilder.Entity<OrderStatus>(b =>
{
b.ToTable("OrderStatus");
b.HasKey(e => e.OrderStatusId);
b.HasKey(e => new { e.CompanyId, e.OrderId }); //CompositeKey
b.Property(e => e.OrderStatusId).UseIdentityColumn();
});
Я извлекаю объект и обновляю значение (не OrderStatusId) и вызываю save, и вот когда он взрывается.
var orderStatus = _context.OrderStatus.FirstOrDefault();
orderStatus.Total = 500;
_context.Entry(OrderStatus).State = EntityState.Modified;
await _context.SaveChangesAsync();
Я наткнулся на этот старый поток не может обновить столбец идентификаторов в Entity Framework Core в котором упоминается «исправление» добавления
b.Property(e => e.OrderStatusId).Metadata.SetAfterSaveBehavior(PropertySaveBehavior.Ignore);
Это действительно работает, но я понятия не имею, зачем это нужно. Это единственная таблица в моем приложении, которая, похоже, этого хочет.
К вашему сведению, раньше я работал на EF core 3.0 и пытался обновить до 3.1.3, но это не имеет значения.
Должен ли я теперь добавлять это ко всем моим беглым определениям?
Предложения приветствуются!