Периодическому InvalidCastException и “Серверу не удалось возобновить транзакцию” с Linq

Исходный ответ:

Проверка на console объект (созданный только с Firebug), как такой:

if (window.console && window.console.firebug) {
  //Firebug is enabled
}

Обновление (январь 2012):

разработчики Firebug имеют , решил удалить window.console.firebug . Можно все еще обнаружить присутствие Firebug утка, вводящая как [1 111]

if (window.console && (window.console.firebug || window.console.exception)) {
  //Firebug is enabled
}

или различные другие подходы как [1 112]

if (document.getUserData('firebug-Token')) ...
if (console.log.toString().indexOf('apply') != -1) ...
if (typeof console.assert(1) == 'string') ...

, но в целом, не должно быть никакой потребности на самом деле сделать так.

10
задан Soraz 22 September 2009 в 07:04
поделиться

4 ответа

Просто обновление:

  • Я отслеживал ошибку, связанную с использованием Linq2Sql-сущностей, передаваемых в качестве источников данных непосредственно на сервер отчетов.

Т.е. мы делали что-то вроде этого:

List<Order> orderList = orderRepository.getOrders();
ReportViewer rv = new ReportViewer();
rv.LocalReport.DataSources.Add("OrderList", orderList);
rv.Render();

По какой-то причине это сбивало с толку текст данных, даже когда он работал в одном домене приложения.

1
ответ дан 4 December 2019 в 03:16
поделиться

This is likely not a problem with your code. It is a bug in SQL Server. They had a similar problem in SQL Server 2005. It only happened under conditions that were just right, so very few people ever saw it and those that did were very confused.

Having said that, here are some things to check that have worked for others with the same problem:

  • Look for DataReaders that aren't закрыто. Убедитесь, что вы делаете myReader.Close () после того, как вы прочтете строки, которые вы хотите. Многие просто качают без закрытия.
  • Используйте собственный класс SqlTransaction вместо OleDbTransactions везде возможно.
  • Посмотрите на свои транзакции. Убедиться вы совершаете / откатываетесь перед тем, как закрыть соединение.
  • Используйте Connection.BeginTransation, а чем Connection.BeginDbTransaction
4
ответ дан 4 December 2019 в 03:16
поделиться
  • Не используйте один и тот же DataContext для разных операций. Используйте один и тот же DataContext для группировки набора операций, которые вы будете отправлять. Если у вас есть другой набор, который вы будете отправлять отдельно, используйте отдельный DataContext.
  • Я не уверен, но также проверьте, перечисляете ли вы одновременно более двух IQueryables. Если это так, попробуйте использовать отдельный DataContext для второго перечисления, чтобы убедиться, что это не вызвано попыткой linq2sql открыться для читателей одновременно.
  • Убедитесь, что ваша модель обновлена ​​с вашей БД. Определение структуры в конструкторе Linq2sql не обновляется автоматически, поэтому при добавлении поля необходимо убедиться, что оно добавлено в конструктор (возможно, путем повторного добавления таблицы, если вы не переименовали какие-либо поля).
1
ответ дан 4 December 2019 в 03:16
поделиться

Используете ли вы DataContext объект для атомарных единиц работы? это очень поможет в решении проблем с подключением, если они существуют.

также иногда необходимо проверить, например, физическое повреждение ОЗУ.

0
ответ дан 4 December 2019 в 03:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: