asp.net LINQ vs Datatable - PullRequest
       22

asp.net LINQ vs Datatable

1 голос
/ 11 января 2010

У меня есть сетка данных на странице asp.net. Также есть фильтры и кнопка поиска по сетке. У меня есть следующие возможные варианты кодирования:

  1. Применение фильтров для сетки внутри хранимой процедуры.
  2. Получить все данные для сетки и применить фильтры + поиск текста с помощью LINQ.
  3. Извлечение всех данных для сетки в датируемые и применение фильтра + текст поиска в качестве фильтра данных.

Я не могу решить, какой из них лучший способ кодирования. Также я использую трехслойную архитектуру и, следовательно, не могу решить, какой слой лучше всего подходит для применения фильтров.

Ответы [ 2 ]

1 голос
/ 11 января 2010

2. Извлеките все данные для сетки и примените фильтры + текст поиска, используя LINQ

Когда вы используете LINQ и имеете удаленный источник данных, вы можете использовать IQuerable Вы описываете, что вы хотите ==>, что вы строите дерево выражений, когда оно выполняется интерпретируется (к SQL в вашем случае) (сравните IEnumerable против I Queryable)

Мой голос: Так что попробуйте использовать Linq, так как он имеет некоторые преимущества а) тип сейфа б) мой опыт показывает, что LINQ помогает вам создавать хорошие структурированные решения, где у вас есть декораторы, такие как Take(10).OrderBy(xx).Skip(30)

Недостаток, который я обнаружил, заключается в том, что вы получаете меньше контроля над тем, что создается SQL, и вам нужно потратить некоторое время на настройку ...

Хорошие книги c # 3.0 в NutShell LINQPad LINQ в действии

0 голосов
/ 11 января 2010

Если у вас много данных, хорошей идеей является применение фильтра к базе данных (выбирая только точное количество нужных вам записей) или к вашему запросу к базе данных. Например, если у вас есть 3 миллиона записей, и вы показываете только 50 записей одновременно, хорошая загрузка только 50 нужных вам записей и использование методов LINQ .Skip (). Take () на странице - хорошая идея. Если вы решите использовать хранимые процедуры, это тоже жизнеспособно, и SP работает в LINQ и DataTable.

Фильтры, возможно, сложнее применить за пределами базы данных; это может быть легко сделано в таблицах данных или LINQ. Это зависит от того, насколько легко или сложно потребуется применить фильтры, легко ли их применить в запросе к БД или нужно ли применять фильтры в коде, загружая все данные и просматривая циклы.

Независимо от того, используете ли вы DataTables или LINQ, любой из них является жизнеспособным подходом. LINQ - это новейшая технология, и она остается здесь; Наборы данных будут доступны некоторое время, но не ожидайте каких-либо новых возможностей набора данных, потому что ADO.NET Entity Framework - это новый набор данных.

Надеюсь, это имеет какой-то смысл.

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