Я начал работать с LINQ к SQL несколько недель назад. Я получил очень устал работать с сервером SQL непосредственно через запросы SQL (SqlDataReader, SqlCommand и все это хороший материал).
После того, как слух о LINQ к SQL и MVC Я быстро перешел все мои проекты в эти технологии. Я ожидал, что LINQ к SQL работы медленнее, но suprisongly оказался довольно быстро, в первую очередь потому, что я всегда забыл закрыть свои связи при использовании DataReaders. Теперь я не придется беспокоиться об этом.
Но есть одна проблема, которая действительно беспокоит меня. Там одна страница, которая просила тысячи раз в день. Система получает данные в начале работы с ним и обновляет его. В первую очередь эти обновления ++ @ - (увеличение и уменьшение значений). Я имел обыкновение делать это так
значение SET UPDATE таблица = значение + 1 WHERE ID = @ Я бы
Он работал без проблем, очевидно. Но с помощью LINQ к SQL данные берутся в начале, переехал в класс, изменились, а затем сохраняются.
Stats.registeredusers ++;
Db.submitchanges ();
Скажем, там было 100 000 пользователей. Linq будет говорить «пусть это будет 100 001» вместо «пусть это будет увеличено на 1».
Но если значение пользователей уже увеличилось (что происходит в моем месте все время), то LINQ будет как упс, это значение уже 100 001. Все, что я брошу исключение "
Вы можете изменить это поведение так, что он не будет бросать исключение, но он все равно не будет установлено значение 100 002.
Как я уже сказал, это случилось со мной все время. Значение стас был увеличен два раза в секунду в среднем. Я просто пришлось переписать этот кусок кода с классической Ado сети.
Итак, мой вопрос заключается в том, как вы можете решить эту проблему с помощью LINQ