我有使用linq语句获取查询的代码,使其成为DbQuery
而不是ObjectQuery
,我使用该查询通过foreach循环添加参数。但是DbQuery
没有参数支持。我知道我可以手动添加它们。但是我的sql语句中有36个不同的参数。所以我需要找到一种方法来添加参数。
foreach (var parameter in query.Parameters)
{
parameters.Add(new System.Data.SqlClient.SqlParameter { ParameterName = parameter.Name, Value = parameter.Value });
}
entities.Database.ExecuteSqlCommand(sql, parameters.ToArray());
这是im用于参数的代码。
我需要一种方法来实现这一点
DbQuery
最佳答案
您可以通过将表达式附加到DbQuery
来组合它。常用的一种模式是:
IQueryable<MyType> query = dbContext.Set<MyType>();
if (param1 != null)
query = query.Where(x => x.Property1 == param1);
if (param2 != null)
query = query.Where(x => x.Property2 == param2);
我不知道这在你的情况下是否可行。否则,您可以随时使用
ObjectQuery
。DbContext
是ObjectContext
的包装,您可以通过((IObjectContextAdapter)dbContext).ObjectContext
获得后者。这是创建objectquery的起点。