не может привести sqlViewResults к DataRowView - PullRequest
0 голосов
/ 28 августа 2018

Я работаю над страницей asp.net и пытаюсь улучшить время ее загрузки. Загрузка 20 записей в виде списка занимает около 8 секунд.

Страница загружалась правильно, несмотря на то, что eval работал медленно:

<asp:LinkButton CommandArgument='<%#Eval("EmployeeID")%>' >Edit</asp:LinkButton>

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

<asp:LinkButton CommandArgument='<%# ((DataRowView)Container.DataItem)["ApplicationID"]%>'>Edit</asp:LinkButton>

Однако новый код выдает следующую ошибку: Невозможно привести объект типа DataObjects.Data.EmployeeInfo к типу 'System.Data.DataRowView

.

Теперь я не знаком со вторым методом, но время загрузки первого метода неприемлемо. вещи на заметку:

  • Существует класс с именем EmployeeInfo
  • Данные извлекаются из sqlServer с помощью хранимой процедуры
  • Хранимая процедура получает данные из представления
  • Существует просмотр списка, источником данных которого являются результаты метода, который возвращает список EmployeeInfo: List
  • listview.databind () вызывается после установки источника данных
  • В каждой записи 10 полей, которые выдают одинаковую ошибку при переходе от eval к ​​вышеупомянутому подходу
  • Программа аварийно завершает работу после вызова databind (), что указывает на проблему приведения

образец кода, который я видел, использовал DataRowView и DataItem. Я должен изменить DataRowView или DataItem на что-то еще? Что мне нужно сделать, чтобы исправить эту ошибку?

1 Ответ

0 голосов
/ 28 августа 2018

Изменение <asp:LinkButton CommandArgument='<%# ((DataRowView)Container.DataItem)["ApplicationID"]%>'>Edit</asp:LinkButton>

до

<asp:LinkButton CommandArgument='<%# ((DataObjects.Data.EmployeeInfo)Container.DataItem).ApplicationID %>'>Edit</asp:LinkButton>

Это вряд ли значительно улучшит время загрузки. 8 секунд для загрузки 20 записей почти наверняка не связаны с Eval или кастингом. Скорее всего, это указывает на проблему производительности в коде вашей хранимой процедуры / базы данных. Вы должны запустить SQL Server Profiler, чтобы получить точное представление о том, сколько времени занимает запрос вашей базы данных. Если будет подтверждено, что проблема связана с вашей хранимой процедурой / представлением, вы можете использовать SSMS Query Analyzer , чтобы выявить узкие места и то, что вы можете сделать для повышения производительности. Если вы хотите опубликовать результаты вашего Query Analyzer, мы можем вам в этом помочь.

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