Что вы можете сделать, так это сохранить ваш ObjectDataSource (ODS), но использовать логику, которую вы используете для извлечения данных, и поместить их в класс, который использует Linq (или любую другую технологию доступа к данным) для извлечения данных для вас.
Для этого в ObjectDataSource вы указываете имя класса, который будет выполнять работу за вас, например,
<asp:ObjectDataSource ID="ObjectDataSource1" runat="server"
TypeName="CustomDAL"
SelectMethod="GetData"/>
. Это заставит ODS создать экземпляр класса CustomDAL
и вызовите метод GetData
.
Поддерживаются также сортировка и разбиение по страницам, но, вероятно, лучше всего реализовать реальную логику самостоятельно в отношении ограничения извлекаемых данных.
Чтобы включить подкачкудобавьте EnablePaging="True"
к объявлению ODS, а в свой SelectMethod добавьте StartRowIndex и PageSize для их обработки в linq с помощью методов Skip
и Take
, чтобы получить нужные записи, например
var results= (from user in context.users
where user.UserId == userId
select user).Skip(StartRowIndex).Take(PageSize).ToList()