【问题标题】:Omit Id property in POST request to .Net Core Web Api在对 .Net Core Web Api 的 POST 请求中省略 Id 属性
【发布时间】:2021-11-20 16:40:28
【问题描述】:

我有一个小的 .Net 5 Web Api 项目。 应用代码优先方法。微软 SQL。 EF 核心。

问题是 - 当控制器接收没有 Id 的模型时 - 它失败 - “发生了一个或多个验证错误。”。如果控制器收到Id: 0 - 没关系,它可以工作。

问题是 - 是否可以在 POST 请求中省略 Id 属性? 我想从请求中完全省略 Id

型号:

public class Playback
    {
        public int Id { get; set; }
        [Required] 
        public string Video_Name { get; set; }
        [Required]
        public string Video_Duration { get; set; }
        public string Playback_User { get; set; }
        public int Playback_Duration { get; set; }
    }

控制器:

public async Task<IActionResult> AddPlaybackEvent2([FromForm] Playback model)
        {
            Playback @event;
            try
            {
                @event = new Playback();
                @event.Video_Name = model.Video_Name;
                @event.Video_Duration = model.Video_Duration;
                @event.Playback_User = model.Playback_User;
                @event.Playback_Duration = model.Playback_Duration;

                _db.Playbacks.Add(@event);
                _db.SaveChanges();

            }
            catch (Exception e)
            {
                return BadRequest(e.Message);
            }

            return Ok(@event);
        }

在 MS SQL 中检查 - 已配置 Id 列的主键和标识增量。

【问题讨论】:

  • 你使用fluent api来设置Id主键自增吗?
  • @Den 不。我认为 EF Core 是自动完成的。我只是在 MS SQL 中打开表并确保 Id 列是启用标识增量的主键。

标签: entity-framework post .net-core asp.net-core-webapi


【解决方案1】:

将此属性添加到您的模型。如果您使用代码优先方法,则需要在模型中进行设置

   [Key]
   [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
   public int Id { get; set; }

【讨论】:

    猜你喜欢
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    • 2021-12-18
    • 2020-08-04
    • 2021-03-26
    • 1970-01-01
    • 1970-01-01
    • 2021-11-27
    相关资源
    最近更新 更多