如何解决在被调用的方法中使用 LinqToDb.Sql.Property<string> 将谓词解析为 System.Object 而不是数据模型
我正在尝试创建一种方法,该方法根据在 JSON 对象中传递的参数列表为通用 CRUD 动态构建过滤器。
参数类
[Serializable]
public class Parameter
{
public string Name { get; set; }
public string Value { get; set; }
public DataType DataType { get; set; } = DataType.STRING;
public Operator Operator { get; set; } = Operator.EQUAL;
public bool IncludeInAutomaticFilter { get; set; } = true;
}
请求类
[Serializable]
public class Request
{
public List<Parameter> Parameters { get; set; }
public dynamic Data { get; set; }
}
构建器方法
public static class QueryHelpers<T>
{
public static IQueryable<T> Filter(IQueryable<T> q,Request req)
{
var r = q;
// Iterates the parameter list
foreach (var param in req.Parameters)
{
// STRING
if (param.DataType == DataType.STRING)
{
switch (param.Operator)
{
case Operator.EQUAL:
r = r.Where(p => sql.Property<string>(p,param.Name) == param.Value);
break;
}
// .... and so on
}
}
// .... and so on
}
return r;
}
}
使用
public List<Data.Usuarios> GetList(Request req)
{
IQueryable<Data.Usuarios> q = from p in db.Usuarios
orderby p.Nombre
select p;
// Build the filters
q = QueryHelpers<Data.Usuarios>.Filter(q,req);
}
JSON 请求对象
{
"parameters": [
{
"Name": "Nombre","Value": "ministra","Operator": 0,// EQUAL
"DataType": 0 // STRING
}
],"data": {}
}
这会在构建器方法中引发以下错误:r = r.Where(p => sql.Property<string>(p,param.Name) == param.Value);
'Property 'System.String Nombre' is not defined for type 'System.Object''
我使用的是 .Net Core 5.0.101 和 linq2db 3.2.3。
我做错了什么?也许这还没有完全实施?任何帮助将不胜感激。谢谢!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。