我有一个模型 Article ,在其中创建了一个 position 字段
public class Article : BaseEntity
{
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int position { get; set; }
}
我想通过Web服务更新 position 字段:
[HttpPut]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(typeof(Microsoft.AspNetCore.Mvc.ModelBinding.ModelStateDictionary), StatusCodes.Status400BadRequest)]
[ProducesResponseType(StatusCodes.Status404NotFound)]
[ProducesDefaultResponseType]
public async Task<ActionResult<Article>> PutArticle([FromBody] Article article)
{
try
{
await _context.SaveChangesAsync();
}
catch (DbUpdateConcurrencyException)
{
if (!ArticleExists(article.ID))
{
return NotFound();
}
{
throw;
}
}
return Ok(article);
}
不幸的是,我一直备有这个问题:
SqlException:无法更新标识列“ position”。
我尝试了cannot update identity column in Entity Framework Core那里提出的每个解决方案,但没有任何效果。这样配置AppDbContext时,实际上没有更多错误。
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Article>().Property(u => u.position).Metadata.IsReadOnlyAfterSave = true;
}
但是位置未保存(其他字段已保存)
顺便说一句,我正在使用Entity Framework 2.2