Обновление сущности, с динамическими данными
Столкнулся с проблемой обновления сущности. Получаю данные из 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 и даже больше, и для этого писать проверку на каждый параметр думаю будет не уместно. Есть какие-то способы автоматизации такого вида обновления?