Форум программистов, компьютерный форум, киберфорум
Наши страницы
C#: Базы данных, ADO.NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/8: Рейтинг темы: голосов - 8, средняя оценка - 4.50
Traizer
1 / 1 / 0
Регистрация: 10.04.2012
Сообщений: 84
1

Работа с ms sql напрямую

16.07.2012, 11:15. Просмотров 1504. Ответов 5
Метки нет (Все метки)

Где есть книжки где от А до Я объясняется работа с БД ms sql в C#, также нужна инфа по языку T-Sql?
Препод учит LINQ, сам научился EF, долго работают.
Для самых простых манипуляций использовать эти фишки нецелесообразно. В EF выборка составляет аж 0,3 секунды. долго.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.07.2012, 11:15
Ответы с готовыми решениями:

Работа с видеопамятью напрямую
Есть ли какой-нибудь способ управлять мерцанием символа, не устанавливая соответствующий бит в...

Работа напрямую с памятью
Такая проблема: есть структура Struct {int a,int b} еще есть две строки требуется скопировать...

Работа с видеокартой напрямую
Подскажите можно ли средствами c# напрямую взаимодействовать с функциями видеокарт, например...

Работа с видеопамятью напрямую
Нашел кусок кода для работы с видеопамятью напрямую #include <conio.h> #include <dos.h> //...

работа с видеобуфером напрямую
Доброго времени суток! Столкнулся с проблемой - взял пример из книги Марек "Ассемблер на примерах"...

5
troika
6 / 6 / 2
Регистрация: 06.12.2009
Сообщений: 51
16.07.2012, 15:47 2
Наверняка в эти 0,3 сек. входит и открытие соединения с базой. Если пользоваться "классикой ADO.NET", то с учетом соединения примерно так же будет. Попробуйте замерить время выборки при помощи EF не первым запросом, а вторым. Он скорее всего сразу не будет закрывать соединение и результат будет лучше. Для работы так сказать "напрямую" почитайте про классы SqlConnection SqlCommand SqlDataReader. Т.е. что бы считать значение поле из таблицы по id записи надо записать нечто вроде:
C#
1
2
3
4
5
6
7
SqlConnection SqlCon = new SqlConnection("строка соединения");
SqlCommand SqlCmd = SqlCon.CreateCommand();
SqlCmd.CommandText = "select c1 from t1 where id=@code";
SqlCmd.Parameters.AddWithValue("@code",id);
if (SqlCon.State == ConnectionState.Closed)
SqlCon.Open();
object scalar_result = SqlCmd.ExecuteScalar();
А вообще для простых манипуляций как раз лучше использовать EF. Разность скорости в малых выборках минимальна, а код гораздо меньше и проще. Т.е. на linq код что написан выше можно записать в 1 строчку да и еще с подсказками по названию таблиц, полей и их типов, да и про открытие/закрытие соединений думать не надо. Меня вот мои преподы ни linq ни EF не учили, так что приходится все самому смотреть))
0
Traizer
1 / 1 / 0
Регистрация: 10.04.2012
Сообщений: 84
16.07.2012, 17:23  [ТС] 3
да, так и есть. Открытие соединения теперь вывел в фоновую часть. Не знаю насколько это правильно.
0
Башир
207 / 207 / 20
Регистрация: 18.05.2010
Сообщений: 846
16.07.2012, 17:25 4
Цитата Сообщение от troika Посмотреть сообщение
Наверняка в эти 0,3 сек. входит и открытие соединения с базой
Я специально проверял это давным давно, и время соединения почти мгновенно, даже в цикле 1000 раз открывал, записывал и закрывал. и вся эта процедура заняло не более секунды.
Цитата Сообщение от troika Посмотреть сообщение
Для работы так сказать "напрямую" почитайте про классы SqlConnection SqlCommand SqlDataReader
Вот с этими классами работает быстро, а LINQ то SQL я давно отказался от нее, он тормознутый.
0
Traizer
1 / 1 / 0
Регистрация: 10.04.2012
Сообщений: 84
16.07.2012, 18:03  [ТС] 5
Цитата Сообщение от Башир Посмотреть сообщение
Я специально проверял это давным давно, и время соединения почти мгновенно, даже в цикле 1000 раз открывал, записывал и закрывал. и вся эта процедура заняло не более секунды.

Вот с этими классами работает быстро, а LINQ то SQL я давно отказался от нее, он тормознутый.
время не соединения, первой выборки составляет 0,3 секунды. А последующие достаточно быстро
0
troika
6 / 6 / 2
Регистрация: 06.12.2009
Сообщений: 51
16.07.2012, 18:14 6
Цитата Сообщение от Башир Посмотреть сообщение
Я специально проверял это давным давно, и время соединения почти мгновенно, даже в цикле 1000 раз открывал, записывал и закрывал. и вся эта процедура заняло не более секунды.
На сколько я помню, SqlConnection при вызове Close() физически не разрывает соединение. Поэтому его и можно в цикле дергать после того как он первый раз открыт. А вот открыть 1000 новых соединений в цикле за 1 секунду думаю не выйдет). Понятно что в любом случае linq2Sql будет медленнее т.к. добавляется еще один промежуточный слой. Вопрос в том, на сколько это критично в конкретной ситуации.

Добавлено через 2 минуты
Цитата Сообщение от Traizer Посмотреть сообщение
время не соединения, первой выборки составляет 0,3 секунды. А последующие достаточно быстро
Ну вот по идее при первой выборке соединение и устанавливается. Потому она и выполняется дольше последующих. Потому как при последующих выборках соединение уже открыто
0
16.07.2012, 18:14
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.07.2012, 18:14

Работа с сервером напрямую с приложения
Добрый вечер. Посоветуйте да библиотеку для работы между базой (MYSQL) и приложением Чтобы не...

Работа с WinSock.dll напрямую
Подскажите, кто знает, ссылку - как работать с WinSock.dll напрямую, без всяких компонентов.

Работа с файлами. Пространство имён не может напрямую включать поля или методы
Задание. Разработать программу Телефонный справочник, которая позволяет накапливать данные о...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru