Как я использую транзакцию в LINQ к SQL с помощью хранимых процедур?

Я также сталкивался с этой проблемой. как на настольном, так и на мобильном видении графика.

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

Чтобы исправить это, я добавил chart.reflow (); после обновления точек.

КОД:

//First declare the chart
var chart = $('#TopPlayer').highcharts();
//Set the min and max
var min = chart.series[0].dataMin; //Top Losser
var max = chart.series[0].dataMax; //Top Winner

for (var i = 0; i < chart.series[0].points.length; i++) {
    if (chart.series[0].points[i].y === max) {
        chart.series[0].points[i].update({
            color: 'GREEN',
        });
    }
    if (chart.series[0].points[i].y === min) {
        chart.series[0].points[i].update({
            color: 'RED',
        });
    }
}

// redraw the chart after updating the points
chart.reflow();

Надеюсь, это поможет тем, у кого такая же проблема, как у меня. :)

5
задан Jason Baker 2 June 2009 в 14:59
поделиться

3 ответа

Вы можете задать область транзакции:

 using (var transaction = new TransactionScope())
 {
     // do stuff here...
     transaction.Complete();
 }

Если возникает исключение или блок using остается без обращения к транзакции.Complete (), тогда все, что выполняется в блоке using, откатывается.

Вам нужно будет сослаться на сборку System.Transactions.

11
ответ дан 18 December 2019 в 07:56
поделиться

Как упоминалось выше в «Парусном дзюдо», я с большим успехом использовал блоки TransactionScope, когда я нужно вызвать хранимые процедуры. Однако есть одна "ловушка", с которой я столкнулся, когда возникает исключение, говорящее, что "транзакция сомнительна". Чтобы обойти это, мне пришлось вызвать неотложный метод в процессе, чтобы он немедленно оценил результат. Поэтому вместо

using (var transaction = new TransactionScope())
{
    var db = new dbDataContext();

    db.StoredProc();
    transaction.Complete();
}

мне пришлось назвать это так ...

using (var transaction = new TransactionScope())
{
    var db = new dbDataContext();

    db.StoredProc().ToList();
    transaction.Complete();
}

В этом примере ToList () может быть любым неотложным методом, который заставляет LINQ немедленно оценивать результат.

Я предполагаю, что это потому, что LINQ ленивый (отложенный) характер не очень хорошо влияет на время транзакции, но это только предположение.

9
ответ дан 18 December 2019 в 07:56
поделиться

Установить свойство Transaction в DataContext?

0
ответ дан 18 December 2019 в 07:56
поделиться
Другие вопросы по тегам:

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