Ссылка на библиотеку NET Standard 2.0 в проекте NET Framework 4.8 - проблемы производительности? - PullRequest
0 голосов
/ 04 февраля 2020

У меня есть NET Framework 4.8 Winforms приложение, которое ссылается на NET Стандартную библиотеку 2.0.3, которая использует Entity Framework Core v 2.2.6 для доступа к данным.

В IDE моей среды разработки работает как чемпион. Когда я запускаю EXE-файл напрямую или запускаю его из среды пользовательского тестирования, он работает очень медленно. Поэтому я немного углубился в это, и это был мой оператор Entity Framework Load (). Я проверил производительность SQL, и это не то, что вызывает 15-секундную задержку при загрузке формы с 30 строками. Я думаю, что это связано либо с загрузкой моделей (не с данными), либо с попыткой загрузки ресурсов, которые доступны в IDE, но их необходимо найти в операционной системе.

Мои другие приложения, использующие Net Framework 4.5.2 и наборы данных / адаптеры таблиц, продолжают работать нормально, и я проверил базу данных, и это не проблема (SQL Сервер). Среда тестирования находится на Windows 10, и моя рабочая станция имеет версию dev NET Core 3.0 и NET Framework 4.8, но пользовательские рабочие станции - нет. Они все одинаково медленные.

Можете ли вы назвать какую-нибудь причину, по которой этот стек задохнется? Любые мысли / советы будут приветствоваться.

1 Ответ

0 голосов
/ 04 февраля 2020

Простое использование библиотеки NetStandard не должно оказывать заметного влияния на производительность. Вероятнее всего, проблема в этом случае, основанная на предоставленной вами ограниченной информации, вероятно, связана с другой средой. В частности, тестовая база данных, вероятно, медленнее, чем база разработки.

Это может быть сложнее определить, но это отчасти связано с тем, как EF core 2.2.x загружает свои данные. В Ef core 3.x странное поведение было исправлено, но в основном фильтрация выполняется на стороне клиента, а не на стороне сервера. Например, если у вас есть таблица с миллионом строк, и вы выбираете 10, EF 2.2.6 вернет миллион строк из базы данных и отбросит большинство из них на клиенте, тогда как EFcore 3 вернет 10 из базы данных. , так как он передает фильтрацию на сервер.

Без дополнительной информации мы не сможем сделать правильное предположение.

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