Я думаю, что John корректен.
"Мое основное беспокойство, которое инстанцирует и располагает один огромный класс DataContext все время для отдельных операций, которые касаются определенных областей Базы данных, было бы, налагают ненужное наложение на ресурсы приложений"
, Как Вы поддерживаете тот оператор? Каков Ваш эксперимент, который показывает, что крупный DataContext является узким местом производительности? Наличие нескольких datacontexts много похоже на наличие нескольких баз данных и не имеет смысл в подобных сценариях, то есть, почти никогда. Если Вы работаете с несколькими datacontexts, необходимо отслеживать, которых принадлежат объекты, с которым datacontext и Вы не можете связать объекты, которые не находятся в том же контексте данных. Это - дорогостоящий запах дизайна ни для какой реальной выгоды.
@Evan "DataContext (или Linq к Объектам ObjectContext) является большим количеством "единицы работы", чем соединение", Которое является точно, почему у Вас не должно быть больше чем одного datacontext. Почему Вы хотели бы больше что одна "единица работы" за один раз?
Как упомянул Джефф С., одним из способов справиться с этой ситуацией является использование JavaScript для отслеживания положения прокрутки блока div и каждый раз при загрузке страницы сбрасывать положение прокрутки на предыдущее значение.
Вот пример кода:
<html>
<body onload="javascript:document.getElementById('div1').scrollTop = document.getElementById('scroll').value;">
<form id="form1" runat="server">
<input type="hidden" id="scroll" runat="server" />
<div id="div1" style="overflow: auto; height: 100px;" onscroll="javascript:document.getElementById('scroll').value = this.scrollTop">
...........<br />
...........<br />
...........<br />
...........<br />
...........<br />
...........<br />
...........<br />
...........<br />
...........<br />
...........<br />
...........<br />
...........<br />
<asp:LinkButton ID="LinkButton1" runat="server" Text="test2"></asp:LinkButton>
</div>
<asp:LinkButton ID="LinkButton2" runat="server" Text="test1"></asp:LinkButton>
</form>
</body>
</html>
На практике я бы не стал помещать javascript непосредственно в элементы, это просто пример. Вместо этого вы также можете сохранить позицию прокрутки в файле cookie.
Самый простой способ - заключить элемент управления в UpdatePanel.
Что происходит, когда кнопки ссылки нажимаются? Какая обработка происходит во время обратной передачи?
В зависимости от ответов на эти вопросы вы можете решить полностью избавиться от обратной передачи и выполнить необходимые операции исключительно на стороне клиента.
(в настоящее время я выполняю такого рода операции). конверсия для клиента.)
Один из способов сделать это - захватить в событии onscroll элемента div значения из свойств scrollLeft и scrollTop. Сохраните эти значения в скрытом текстовом поле (ах). При обратной публикации используйте значения из текстовых полей для сброса свойств.