Jan*_*šeň 8 c# asp.net reactjs entity-framework-core
我有 .NET 5 MVC 项目(原始 ASP.NET 3.1 Core MVC),我使用 EF Core 5 + React + Redux 和 MSSql。
我正在寻找一种查找方式,如何通过 REST GET 请求将数据从 React 表单(带有、选择、输入、范围框的表单)发送到后端,并从沙子过滤器中自动生成 WHERE SQL 查询,并带有选定的值。
是否有任何 EF Core 功能,或者我必须在 FOREACH 中生成此查询,例如:
query = ...
foreach param_filter in
query = query.Where(...)
Run Code Online (Sandbox Code Playgroud)
我有一个带有过滤器的 HTML 表单,它们的值是从数据库生成的,每个网站页面都有另一个过滤器的数量和类型,但每个过滤器都有一个唯一的字符串 ID
添加信息:
输入请求:
{
"name": "Application",
"values": [
{
"name": "Smart Homes & Cities | Industrial | Automotive | Security | Consumer",
"value": "Smart Homes & Cities | Industrial | Automotive | Security | Consumer"
}
],
"type": "select",
"field": "ant_application",
"sort": 4
}
Run Code Online (Sandbox Code Playgroud)
我想使用过滤器数组获取 REST API 请求,并为每个字段类型生成如下内容:
foreach (var f in filters)
query.Where(p => p.Field == p.field).AndValueNotIn(f.values);
Run Code Online (Sandbox Code Playgroud)
其中 p 表示产品列表,其中每个产品都有自己的字段值
现在我在 EF Core DB 过程调用中使用,如:
.FromSqlInterpolated($"EXEC GetGroupFilters {groupId}").AsEnumerable()
Run Code Online (Sandbox Code Playgroud)
MSSql 过程具有唯一的 SQL(连接、选择、联合),并从我加载到对象中并使用 LINQ 的 DB 返回格式化的行,我有两个选择:
我认为然后选择 1 会更快更好,但仍然找到最佳解决方案
有没有更好的解决办法?
小智 1
其实我也做过这样的事
我建议您通过下面的链接了解Linq.Expression中的表达式树,然后您才能在此链接中找到您的问题答案
但为了更好地理解如何实现这一点,我在下面放置了一些示例代码:
// Comment _Queryable.Where(x=>x.Something) | This Queryable from
// Type Of Generics (Where Any model With Any Field With This)
var query = Expression.Equal(Expression.Property(keyParameter, filter.Key),
Expression.Constant(filter.Value));
MethodCallExpression whereExpression = Expression.Call(
typeof(Queryable),
"Where",
new Type[] {_queryable.ElementType},
_queryable.Expression,
Expression.Lambda<Func<T, bool>>(query, new
ParameterExpression[] {keyParameter}));
_queryable =
_queryable.Provider.CreateQuery<T(whereExpression);
Run Code Online (Sandbox Code Playgroud)
抱歉我的英语不好希望它能帮助你
| 归档时间: |
|
| 查看次数: |
286 次 |
| 最近记录: |