我的条款有未知数量的参数。我该如何编写它才能与 EF Core 一起使用?
var formattedValues = String.Join(",", values.Select(s => "'" + s + "'"));
var identifierParam = new SqlParameter("jsonColumn", $"$.{identifierKey}");
var filterValueParam = new SqlParameter("value", $"%{formattedValues}%");
var items = dbContext.Items.FromSql("select * FROM Items WHERE AND JSON_VALUE(Attributes, @jsonColumn) in (@value)", filterValueParam, identifierParam).ToList();
我认为这是因为 in 子句中的每个值都需要它自己的参数。
由于您使用的是 SQL Server,因此您可以将值列表作为 JSON 传递。例如
var jsonValues = JsonConvert.SerializeObject(values.ToList());
var filterValueParam = new SqlParameter("@values", jsonValues );
var identifierParam = new SqlParameter("@jsonColumn", $"$.{identifierKey}");
var sql = "select * FROM Items WHERE AND JSON_VALUE(Attributes, @jsonColumn) in (select value from openjson(@values))";
var items = dbContext.Items.FromSql(sql, filterValueParam, identifierParam).ToList();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)