Обновление сущности, с динамическими данными

Столкнулся с проблемой обновления сущности. Получаю данные из Body

        [HttpPut]
        public IActionResult Index([FromBody] DateQueryParameters dateParameters)
        {
            if (!this.ModelState.IsValid)
            {       
                return new ObjectResult(ErrorHandler.check(this.ModelState));
            }
          
            User user = _context.Users.Where(user => user.Id == 1).ToList().FirstOrDefault();
            return new ObjectResult("good");
        }

DateQueryParameters:

public class DateQueryParameters
    {
        [DateLessThan("test", ErrorMessage = "Name length can't be more than 8.")]
        [Required]
        public int Test { get; set; }

    
        [Range(2000, int.MaxValue, ErrorMessage = "test")]
        public int? beach { get; set; }
    }

DBContext:

using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Hosting;
using MySQL.Data.EntityFrameworkCore;
using Mysqlx.Crud;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Reflection.Metadata;
using System.Text.Json.Serialization;

namespace WebApplication3
{
    public class DatabaseContext : DbContext
    {

        public DbSet<User> Users { get; set; }
        public DbSet<Role> Roles { get; set; }

        public DatabaseContext(DbContextOptions<DatabaseContext> options) : base(options) { }


        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {

            modelBuilder.Entity<User>().Navigation(e => e.Role).AutoInclude();

        }
    }
 
 

    public class User
    {
        [Key]
        public int Id { get; set; }

        public string Name { get; set; }

        [JsonIgnore]
        [ForeignKey("Role")]
        public int RoleId { get; set; }
     
        public Role Role { get; set; }

        public string Test { get; set; }
    }

    public class Role
    {
        [Key]
        public int Id { get; set; }
        public string Name { get; set; }

    }


}

Получается то, что DateQueryParameters принимает обязательный параметр Test, и не обязательный beach. Мне нужно реализовать это так, чтобы можно было обновить запись в бд, но при этом игнорировались параметры которые NULL, то есть те что я не указал в Body игнорировались. Я хочу это сделать автоматически, без проверки каждого параметра на null, ведь параметров может быть 20-30 и даже больше, и для этого писать проверку на каждый параметр думаю будет не уместно. Есть какие-то способы автоматизации такого вида обновления?


Ответы (0 шт):