Entity Framework - динамический sql - PullRequest
1 голос
/ 25 августа 2009

Я реализую функцию поиска для приложения, которое использует каркас сущностей. Есть несколько необязательных полей для поиска в конкретной таблице / представлении базы данных. Каков наилучший способ реализовать такой поиск с EF? Хранимая процедура? Или это можно сделать (реально), используя только Linq?

Ответы [ 4 ]

3 голосов
/ 25 августа 2009

Обычный шаблон для обработки необязательных параметров поиска заключается в следующем:

string p = null;
var q = from o in dataContext.Products
    where ((o.Name == p) || (p == null))
    select o;
2 голосов
/ 25 августа 2009

Вы должны быть в состоянии сделать это в LINQ достаточно легко. Всегда помните, что запросы LINQ являются цепочечными:

var query = (from p in products
             select p);

if(field1 != null)
{
    query = (from p in query
             where p.Field1 = field1
             select p);
}

if(field2 != null)
{
    query = (from p in query
             where p.Field2 = field2
             select p);
}

foreach(Product p in query)
{
   // ...
}
1 голос
/ 25 августа 2009

То, что говорит Лорен, сработает (+1). Или используйте Microsoft Dynamic LINQ . Работает нормально с L2E.

0 голосов
/ 25 августа 2009

Вы можете взглянуть на эту статью о динамическом генерировании объектов лямбда-выражений для этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...