Я бы хотел запросить таблицу на основе списка KeyValuePair
.С подходом Model-First я мог бы сделать следующее:
var context = new DataContext();
var whereClause = new StringBuilder();
var objectParameters = new List<ObjectParameter>();
foreach(KeyValuePair<string, object> pair in queryParameters)
{
if (whereClause.Length > 0)
whereClause.Append(" AND ");
whereClause.Append(string.Format("it.[{0}] = @{0}", pair.Key));
parameters.Add(new ObjectParameter(pair.Key, pair.Value));
}
var result = context.Nodes.Where(whereClause.ToString(), parameters.ToArray());
Теперь я использую подход Code-First, а this, где метод больше не доступен.К счастью, я где-то увидел статью (больше не помню), в которой предлагалось преобразовать DbContext
в IObjectContextAdapter
, а затем вызвать CreateQuery
следующим образом:
var result = ((IObjectContextAdapter)context)
.ObjectContext.CreateQuery<Node>(whereClause.ToString(), parameters.ToArray());
К сожалению, этовыдает ошибку:
'{ColumnName}' не может быть разрешен в текущей области или контексте.Убедитесь, что все ссылочные переменные находятся в области видимости, что необходимые схемы загружены и что на пространства имен ссылаются правильно.
Где {ColumnName} - это столбец, указанный в whereClause
.
Есть идеи, как я могу динамически запрашивать DbSet
по списку пар ключ / значение?Вся помощь будет принята с благодарностью.