Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM Новый топик    Ответить
 DbContext.SaveChanges()  [new]
RAVen42
Member

Откуда:
Сообщений: 149
Приветствую всех!

Есть проблема, решение которой не могу найти.
Есть простой кусок кода (пример):
t_Orders order = new t_Orders();
using (dbEntities db = new dbEntities())
{
     order = db.t_Orders.Where(x => x.Id == orderId).FirstOrDefault();                   
 
     order.timeArrivalManual = order.timeArrivalCalc;
     order.timeDepartureManual = order.timeDepartureCalc;

     db.SaveChanges()
}


Так вот, этот простой кусок кода может выполнятся по 3-8 секунд. Казалось бы всё очень просто.

процесс замирает на db.SaveChanges()

Знающие люди подскажите в какую сторону копать?
15 мар 18, 12:42    [21258246]     Ответить | Цитировать Сообщить модератору
 Re: DbContext.SaveChanges()  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 21941
Какая СУБД? Что говорит профилировщик?
15 мар 18, 12:49    [21258280]     Ответить | Цитировать Сообщить модератору
 Re: DbContext.SaveChanges()  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38640
RAVen42,
Вклчить логирование в консоль и засечь время в бд. Може она тормозит.
15 мар 18, 12:50    [21258289]     Ответить | Цитировать Сообщить модератору
 Re: DbContext.SaveChanges()  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38640
RAVen42,
Код страный. Что он делает?
Копия нового?
15 мар 18, 12:56    [21258319]     Ответить | Цитировать Сообщить модератору
 Re: DbContext.SaveChanges()  [new]
RAVen42
Member

Откуда:
Сообщений: 149
Shocker.Pro СУБД MS SQL 2008R2 St.ed.
Профилировщик говорит duration = 35000
Смотрел также с помощью application insights, он показывает 43 SQL зависимости (я пока не разобрался что это такое) по 1- 5 ms. и 1 запрос к БД SQL от 3 до 8 сек.

Petro123
RAVen42,
Код странный. Что он делает?
Копия нового?


Присвоить одному полю значение другого. Код вырван из контекста. Но именно в этом месте и происходят тормоза.

Я не могу понять почему простая операция апдейта одной записи через EF, делается так долго. Причем в SSMS выполняется мгновенно.
И самое интересное именно этот кусок кода, другие места с SaveChanges() работают норм.
15 мар 18, 17:18    [21259615]     Ответить | Цитировать Сообщить модератору
 Re: DbContext.SaveChanges()  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 21941
RAVen42
Профилировщик говорит duration = 35000
что-то не то смотришь. Это 35 секунд, а не 3-8
15 мар 18, 17:25    [21259638]     Ответить | Цитировать Сообщить модератору
 Re: DbContext.SaveChanges()  [new]
Konst_One
Member

Откуда:
Сообщений: 11551
using (dbEntities db = new dbEntities())
{
     db.Configuration.ProxyCreationEnabled = false;
     db.Configuration.LazyLoadingEnabled = false;
 
     var order = db.t_Orders.FirstOrDefault(x => x.Id == orderId);                   
     order.timeArrivalManual = order.timeArrivalCalc;
     order.timeDepartureManual = order.timeDepartureCalc;

     db.SaveChanges();
}
15 мар 18, 17:34    [21259670]     Ответить | Цитировать Сообщить модератору
 Re: DbContext.SaveChanges()  [new]
RAVen42
Member

Откуда:
Сообщений: 149
Shocker.Pro
RAVen42
Профилировщик говорит duration = 35000
что-то не то смотришь. Это 35 секунд, а не 3-8

3500 лишний 0
15 мар 18, 17:39    [21259689]     Ответить | Цитировать Сообщить модератору
 Re: DbContext.SaveChanges()  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38640
RAVen42,
Посмотреть в консоли какой пошел запрос и когда оооооочень трудно и долго.
15 мар 18, 17:49    [21259716]     Ответить | Цитировать Сообщить модератору
 Re: DbContext.SaveChanges()  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 21941
RAVen42
3500 лишний 0
Ну ок тогда, и как выглядит этот запрос в профилировщике?
15 мар 18, 18:08    [21259747]     Ответить | Цитировать Сообщить модератору
 Re: DbContext.SaveChanges()  [new]
Агнец за бортом
Member

Откуда:
Сообщений: 1351
RAVen42,

Так а запись то в принципе сохраняется?
16 мар 18, 00:28    [21260174]     Ответить | Цитировать Сообщить модератору
 Re: DbContext.SaveChanges()  [new]
Relic Hunter
Member

Откуда: AB
Сообщений: 7420
RAVen42,

Так к контекстом твой код ничего не делает. Что ты там сохранять собралсо?
16 мар 18, 00:34    [21260179]     Ответить | Цитировать Сообщить модератору
 Re: DbContext.SaveChanges()  [new]
RAVen42
Member

Откуда:
Сообщений: 149
Relic Hunter
RAVen42,

Так к контекстом твой код ничего не делает. Что ты там сохранять собралсо?

т.е.?


Агнец за бортом

Да конечно, в итоге всё сохраняется как и надо.
16 мар 18, 05:58    [21260246]     Ответить | Цитировать Сообщить модератору
 Re: DbContext.SaveChanges()  [new]
Агнец за бортом
Member

Откуда:
Сообщений: 1351
RAVen42
Relic Hunter
RAVen42,

Так к контекстом твой код ничего не делает. Что ты там сохранять собралсо?

т.е.?


Агнец за бортом

Да конечно, в итоге всё сохраняется как и надо.


Ну и другие операции с этим же контекстом пролетают мгновенно?
16 мар 18, 07:34    [21260278]     Ответить | Цитировать Сообщить модератору
 Re: DbContext.SaveChanges()  [new]
RAVen42
Member

Откуда:
Сообщений: 149
Агнец за бортом Да другие операции отрабатывают мгновенно.
Есть подозрения на блокировки со стороны SQL.
19 мар 18, 05:57    [21266458]     Ответить | Цитировать Сообщить модератору
 Re: DbContext.SaveChanges()  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38640
RAVen42,
Лог запроса в бд будет? Или через месяц?
19 мар 18, 08:59    [21266562]     Ответить | Цитировать Сообщить модератору
Все форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM Ответить