.net 具有表的参数名的方法从不同的表返回BaseModel

kpbwa7wx  于 2023-02-26  发布在  .NET
关注(0)|答案(1)|浏览(111)

我想创建一个端点与两个parâmetros,表名和过滤器.然后创建一个查询,访问datacontext表中的参数和过滤器上的where子句,并在基础模型中选择.ID,名称表a:idA,代码A,名称A表b:idB、代码B、名称B
方法getlist(Table a,null),从Map到基础模型的表A返回所有内容
有人知道如何在C# .net Core 6上创建这个吗?
谢谢
该方法应返回从参数上发送的表Map的BaseModel列表

jm2pwxwz

jm2pwxwz1#

如果你能提供更多的细节,那就太好了。不过,下面的内容可能是一个好的开始:

[ApiController]
    public class MyController : ControllerBase
    {
        private readonly DataContext_context;

        public MyController(DataContextcontext)
        {
            _context = context;
        }

        [HttpGet("{tableName}")]
        public IActionResult GetList(string tableName, string? filter=null)
        {
            var entityType = _context.Model.FindEntityType(tableName);
            if (entityType == null)
            {
                return NotFound();
            }

            var query = _context.Set(entityType.ClrType).AsQueryable();

            if (!string.IsNullOrEmpty(filter))
            {
                // Apply filter to the query
                query = query.Where($"{entityType.FindPrimaryKey().Properties.First().Name} = {filter}");
            }

            // Map to base model
            var result = query.Select(entity =>
                entityType.ClrType.Name switch
                {
                    nameof(TableA) => new BaseModel { Id = entity.IdA, Name = entity.NameA },
                    nameof(TableB) => new BaseModel { Id = entity.IdB, Name = entity.NameB },
                    _ => throw new NotSupportedException($"Table {tableName} is not supported")
                });

            return Ok(result.ToList());
        }
    }

相关问题