我正在尝试实现动态dto。首先,将有一个信息管理器,您可以在其中选择要由WebApi返回的字段。
稍后,您会在api中使用所需的DTO ID向端点发送请求。此方法将获取信息,在数据库中查询该信息,并获得集成了DTO(动态字段数)的字段:
[Route("api/workers")]
public IEnumerable<object> GetWorkers([FromRoute] string idEnterprise,int idDTO)
{
//lstDummyFields = _context.Dtos.Include("DtoFields").
//Where(n=>n.idDto==idDTO).select(n=>n.DtoFields.name).ToList();
//The property will look like this, the selected dto could have different properties(dynamic) but always call the same as the entity name fields
List<string> lstDummyFields = new List<string>
{
"idWorker",
"first_name",
"last_name",
"birthday",
"adress"
};
dynamic dto = new ExpandoObject() as IDictionary<string,object>;
foreach (var p in lstDummyProperty)
{
dto.Add(p, null);
}
return _context.workers.Where(n=>n.IdEnterprise==idEnterprise).select.(new { ???? }) .ToList();
}
我不知道如何实现select子句。可能与此帖子相关,但其明显不同。
https://stackoverflow.com/a/34726946/2642777
我很接近答案,或者我走错路了?可以请一些帮助来解决这个问题。
答案 0 :(得分:0)
我们不知道您的情况,也许使用Directory更好?但是您可以使用以下代码:
List<string> lstDummyFields = new List<string>
{
"idWorker",
"first_name",
"last_name",
"birthday",
"adress"
};
dynamic dto = new ExpandoObject();
foreach (var p in lstDummyFields)
{
((IDictionary<String, Object>)dto).Add(new KeyValuePair<string, object>( p, null));
}
答案 1 :(得分:0)