|
Entity Framework. Апдейт в нескольких транзакциях. Почему ?
|
|||
---|---|---|---|
#18+
Делаю простой апдейт элементов в таблице: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
Профайлер SQL показывает, что после вызова метода SaveChanges - EF кидает кучу отдельных запросов в БД. Код: xml 1. 2. 3.
Почему в разных транзациях то ? Мне это не нравится... По моему так не должно быть. Если я апдейчу 10 000 записей, то EF делает 10 тысяч запросов в БД ?? База упадет уже после 10 параллельных юзеров (ну хорошо, не с 10) с такими нагрузками. Объясните пожалуйста, что я делаю не так. Может я чего то не понимаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2014, 19:14 |
|
Entity Framework. Апдейт в нескольких транзакциях. Почему ?
|
|||
---|---|---|---|
#18+
Так работает EF, увы... Как вариант стоит обратить внимание на использование stored procedure и использование imported functions, либо на что-то вроде 3их разработок: тут ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2014, 19:43 |
|
Entity Framework. Апдейт в нескольких транзакциях. Почему ?
|
|||
---|---|---|---|
#18+
Еще как вариант сократить время исполнения подобных команд использовать это: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2014, 19:48 |
|
Entity Framework. Апдейт в нескольких транзакциях. Почему ?
|
|||
---|---|---|---|
#18+
AxeleronТак работает EF, увы... Как вариант стоит обратить внимание на использование stored procedure и использование imported functions, либо на что-то вроде 3их разработок: тут Спасибо. А что порекомендуете ? Наверное сообщество уже как-то решило этот вопрос - ибо EF существует уже несколько лет. Это я только только начал ковырять :) Не хочется изобретать велосипед то. Как лучше всего улучшить производительность EF ? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2014, 20:17 |
|
Entity Framework. Апдейт в нескольких транзакциях. Почему ?
|
|||
---|---|---|---|
#18+
AxeleronТак работает EF, увы... Как вариант стоит обратить внимание на использование stored procedure и использование imported functions, либо на что-то вроде 3их разработок: тут Что за imported functions ? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2014, 20:38 |
|
Entity Framework. Апдейт в нескольких транзакциях. Почему ?
|
|||
---|---|---|---|
#18+
Я обычно пользуюсь хранимыми процедурами, благо EF умеет их map'ить. SaveChanges, кстати, пользуюсь гораздо реже. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2014, 10:13 |
|
Entity Framework. Апдейт в нескольких транзакциях. Почему ?
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2014, 10:34 |
|
Entity Framework. Апдейт в нескольких транзакциях. Почему ?
|
|||
---|---|---|---|
#18+
ProBiotekAxeleronТак работает EF, увы... Как вариант стоит обратить внимание на использование stored procedure и использование imported functions, либо на что-то вроде 3их разработок: тут Спасибо. А что порекомендуете ? Наверное сообщество уже как-то решило этот вопрос - ибо EF существует уже несколько лет. Это я только только начал ковырять :) Не хочется изобретать велосипед то. Как лучше всего улучшить производительность EF ? 1. не использовать EF 2. процедуры ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2014, 10:56 |
|
Entity Framework. Апдейт в нескольких транзакциях. Почему ?
|
|||
---|---|---|---|
#18+
Winnipuh1. не использовать EF 2. процедуры То все носятся с этим EF, превозносят как нечтно крайне полезное. А как решишь приобщится, оказывается нет даже базовых вещей... :) ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2014, 12:03 |
|
Entity Framework. Апдейт в нескольких транзакциях. Почему ?
|
|||
---|---|---|---|
#18+
Ilya81Я обычно пользуюсь хранимыми процедурами, благо EF умеет их map'ить. SaveChanges, кстати, пользуюсь гораздо реже. А можно ли, используя EF передавать в процедуру строго-типизированный список объектов, чтобы уже в SQL по нему пройтись и записать/обновить элементы в таблице ? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2014, 12:07 |
|
Entity Framework. Апдейт в нескольких транзакциях. Почему ?
|
|||
---|---|---|---|
#18+
ProBiotekIlya81Я обычно пользуюсь хранимыми процедурами, благо EF умеет их map'ить. SaveChanges, кстати, пользуюсь гораздо реже. А можно ли, используя EF передавать в процедуру строго-типизированный список объектов, чтобы уже в SQL по нему пройтись и записать/обновить элементы в таблице ? http://www.c-sharpcorner.com/UploadFile/78607b/using-table-valued-parameters-in-entity-framework/ ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2014, 12:17 |
|
Entity Framework. Апдейт в нескольких транзакциях. Почему ?
|
|||
---|---|---|---|
#18+
Arm79 http://msdn.microsoft.com/en-us/data/dn456843.aspx Эта статья о множестве операций в одной транзакции, а не о том как оптимизировать множество однотипных операций в одну. Это не решение вопроса, заданного TC ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2014, 12:22 |
|
Entity Framework. Апдейт в нескольких транзакциях. Почему ?
|
|||
---|---|---|---|
#18+
ProBiotekAxeleronТак работает EF, увы... Как вариант стоит обратить внимание на использование stored procedure и использование imported functions, либо на что-то вроде 3их разработок: тут Что за imported functions ? Это объекты в EF, которые создаются для отмапленных ХП, так как напрямую они не вызываются в коде, каждую ХП надо отмапить в импортированную функцию. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2014, 12:23 |
|
Entity Framework. Апдейт в нескольких транзакциях. Почему ?
|
|||
---|---|---|---|
#18+
Axeleron, ProBiotekПочему в разных транзациях то ? Я привел ссылку на исполнение множества запросов в одной транзакции, как и спрашивалось. Массовые апдейты - это не стезя ORM. Хотя никаких запретов на исполнение пользовательского SQL нет, и ручками можно прописать все, что угодно. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2014, 12:36 |
|
Entity Framework. Апдейт в нескольких транзакциях. Почему ?
|
|||
---|---|---|---|
#18+
AxeleronТак работает EF, увы... Как вариант стоит обратить внимание на использование stored procedure и использование imported functions, либо на что-то вроде 3их разработок: тут пипец полный ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2014, 12:59 |
|
Entity Framework. Апдейт в нескольких транзакциях. Почему ?
|
|||
---|---|---|---|
#18+
ViPRos, Почему пипец. EF в принципе не для решения таких задач и оптимизаций разрабатывался. Если хочется быстро и оптимально, то вызов ХП. Ну или глянуть на NHibernate - слышал, он bulk апдейты поддерживает. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2014, 13:31 |
|
Entity Framework. Апдейт в нескольких транзакциях. Почему ?
|
|||
---|---|---|---|
#18+
to all Наброс ;) Azure кажется ограничивает количество транзакций в еденицу времени. По странному стечению обстоятельств - EF разрабатывала та же компания, и она же позиционирует EF как передовое средство, которое рекомендуется использовать. Сложив дважды два делаем выводы ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2014, 14:22 |
|
Entity Framework. Апдейт в нескольких транзакциях. Почему ?
|
|||
---|---|---|---|
#18+
ProBiotekWinnipuh1. не использовать EF 2. процедуры То все носятся с этим EF, превозносят как нечтно крайне полезное. А как решишь приобщится, оказывается нет даже базовых вещей... :) Вот именно, я имхую, что крайне полезное оно только в определенных случаях, когда структура базы проста и утрясена, практически не меняется, когда база небольшая. А те, кто наивно думает, что оно упростит ему жизнь и позволит не вникать в то, как работать с базой - это блудняк. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2014, 15:20 |
|
Entity Framework. Апдейт в нескольких транзакциях. Почему ?
|
|||
---|---|---|---|
#18+
WinnipuhProBiotekпропущено... То все носятся с этим EF, превозносят как нечтно крайне полезное. А как решишь приобщится, оказывается нет даже базовых вещей... :) Вот именно, я имхую, что крайне полезное оно только в определенных случаях, когда структура базы проста и утрясена, практически не меняется, когда база небольшая. А те, кто наивно думает, что оно упростит ему жизнь и позволит не вникать в то, как работать с базой - это блудняк. Я считаю, что EF и вправду очень полезная технология, которая очень упрощает жизнь, особенно когда надо быстро сделать прототип чего-то, чтобы не возиться с конекциями, командами, параметрами вручную. Пробелма автора элементарно решается с помощью function import динамической ХПы, в которую как один параметр передается строка id, разделенных запятой. Хотя, кажется, даже на это идти не надо, так как всю логику можно написать в самой ХП и все будет выполняться одной командой. Не делаейте из мухи слона, тут нет вообще никакой проблемы. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2014, 15:54 |
|
Entity Framework. Апдейт в нескольких транзакциях. Почему ?
|
|||
---|---|---|---|
#18+
ProBiotekIlya81Я обычно пользуюсь хранимыми процедурами, благо EF умеет их map'ить. SaveChanges, кстати, пользуюсь гораздо реже. А можно ли, используя EF передавать в процедуру строго-типизированный список объектов, чтобы уже в SQL по нему пройтись и записать/обновить элементы в таблице ? Без проблем. В т. ч. при необходимости можно для параметров/результатов хранимых процедур использовать те же классы, что и для запросов через IQuerable. Обычно я так и делаю. Уточняю, речь веду про model first, там в редакторе модели можно много что настроить, можно ещё обновления выполнять через хранимые процедуры, это тоже задаётся в mapping'е. А простые типы данных он вообще автоматически map'ит. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2014, 17:14 |
|
Entity Framework. Апдейт в нескольких транзакциях. Почему ?
|
|||
---|---|---|---|
#18+
Ilya81, Имею дело с Code First подходом. Тут можно делать так, как вы говорите ? И я не понял - процедура то на каком языке пишется ? Раз вы говорите, что "использовть классы". Интересно.... ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2014, 17:36 |
|
Entity Framework. Апдейт в нескольких транзакциях. Почему ?
|
|||
---|---|---|---|
#18+
ProBiotekIlya81Я обычно пользуюсь хранимыми процедурами, благо EF умеет их map'ить. SaveChanges, кстати, пользуюсь гораздо реже. А можно ли, используя EF передавать в процедуру строго-типизированный список объектов, чтобы уже в SQL по нему пройтись и записать/обновить элементы в таблице ? Так нельзя, да и зачем Вам это? Для этого и есть код на серверной части, чтобы сделать, что Вы хотите. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2014, 18:50 |
|
Entity Framework. Апдейт в нескольких транзакциях. Почему ?
|
|||
---|---|---|---|
#18+
Axeleron Так нельзя, да и зачем Вам это? Для этого и есть код на серверной части, чтобы сделать, что Вы хотите. Затем, что я хочу в одном вызове процедуры передавать НЕЧТО (в моем случае список объектов) за один раз. Чтобы это нечто обновило 10 тысяч объектов таблицы... Чтобы было не 10 тысяч транзакций (с тем же объемом данных), а одна. PS. В оракл кажется можно передавать списки объектов. Можно ли такое делать в MS SQL ? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2014, 18:56 |
|
Entity Framework. Апдейт в нескольких транзакциях. Почему ?
|
|||
---|---|---|---|
#18+
ProBiotek, Так не выйдет. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2014, 19:24 |
|
Entity Framework. Апдейт в нескольких транзакциях. Почему ?
|
|||
---|---|---|---|
#18+
AxeleronProBiotek, Так не выйдет. Хочется чего-то типа этого http://msdn.microsoft.com/ru-ru/library/system.data.sqlclient.sqlbulkcopy(v=vs.110).aspx ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2014, 20:58 |
|
|
start [/forum/topic.php?fid=20&msg=38822408&tid=1402178]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
40ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 154ms |
0 / 0 |