Возможны ли динамические параметры для предложения where в типизированном наборе данных?

Обычные адаптеры таблиц ASP.NET хороши для простых предложений where, например: «where city = @city and state = @state and zip = @zip».

Но как мне разработать DAL, который позволит мне использовать любую комбинацию параметров - "поиск только по городу" или "поиск по почтовому индексу и штату" или "поиск по городу и штату"..... или еще более сложный" поиск по почтовому индексу, но если @zip имеет значение null, тогда поиск по городу"....

Как я могу разработать DAL, который поддерживает такие динамические условия? Являются ли типизированные наборы данных с адаптерами таблиц лучшим подходом? В настоящее время я просто использую динамические SQL-запросы с обычными наборами данных и пытаюсь преобразовать их в какой-то строго типизированный DAL.


person achilles19282    schedule 16.02.2010    source источник


Ответы (1)


Мне кажется, что вы, возможно, захотите ознакомиться с Dynamic LINQ. Это может быть полезно, когда существуют такие динамические условия. Я обнаружил, что образцы кода здесь очень полезны.

ХТХ, Сид

person SidC    schedule 16.02.2010
comment
Спасибо, Сид, я несколько опасаюсь делать все вещи DAL с LINQ на случай, если окажется, что MS решит убить (полностью/частично) LINQ позже. Но независимо от того, останется ли LINQ или исчезнет, ​​есть ли другой подход к разработке DAL, который может решить эту проблему динамического предложения where? - person achilles19282; 16.02.2010
comment
Ахиллес, на ум приходят две возможные идеи. Во-первых, и не так просто, это создать sprocs для выбора данных из вашей таблицы, используя почтовый индекс, город или штат или несколько параметров. Затем на уровне презентации создайте элемент управления, который использует раскрывающийся список и текстовое поле, в котором раскрывающийся список позволяет пользователю выбрать поле для поиска — город, штат или почтовый индекс. Редакционная статья начинается здесь: Я не думаю, что сущности LINQ to ADO.NET в ближайшее время никуда не денутся. Я использую L2E в текущих проектах, но избегаю использования LINQ to SQL, так как чувствую, что он будет постепенно прекращен. - person SidC; 17.02.2010