|
Помогите переписать C# код и заменить его на хранимую процедуру, чтобы избавиться от EF4
|
|||
---|---|---|---|
#18+
Здравствуйте! Помогите разобраться с такой проблемой: Есть проект на mvc3 с использованием EntityFramework4, который работает медленно и требует оптимизации. Медленно работает следующая часть проекта: Есть товар, характеризующийся двумя типами свойств. Каждый конкретный товар может принимать одно значение для каждого из свойств. То есть имеем следующие модели (и соответствующие таблицы в БД): Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21.
Так же есть клиент, которого могут удовлетворять такие товары, которые соответствуют его требованиям по данным двум свойствам. Причем у клиента может быть несколько подходящих значений как первого так и второго свойства. То есть имеем: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22.
Суть проблемного участка кода заключается в заполнении таблицы соответствий продуктов клиентам: Код: c# 1. 2. 3. 4. 5. 6.
С некоторых пор сервер с трудом справляется с данной задачей и на одну итерацию уходит 2 часа, что очень много. Причина, предположительно, в использовании не самой быстрой технологии EntityFramework4, в связи с чем есть желание вынести всё это дело в хранимую процедуру. Однако я совсем не знаю SQL до такой, по правде сказать, степени, что даже не знаю что мне гуглить. Понятно, что ознакомиться с соответствующей литературой было бы не лишним, однако времени сейчас на это нет - вопрос стоит остро. В каком направлении мне хотя бы искать? Мне кажется, что это какая-то типовая задача и много где могла обсуждаться. Так ли это? Прошу прощения за длинный пост и спасибо всем кто поможет! ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2013, 21:09 |
|
Помогите переписать C# код и заменить его на хранимую процедуру, чтобы избавиться от EF4
|
|||
---|---|---|---|
#18+
Не... причина не в EF. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2013, 21:20 |
|
Помогите переписать C# код и заменить его на хранимую процедуру, чтобы избавиться от EF4
|
|||
---|---|---|---|
#18+
Почему нет? Видел много разных тем на stackoverflow.com, где народ жаловался на тормоза, связанные именно с EF. Ну или если не в EF проблема, то в чем тогда? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2013, 21:30 |
|
Помогите переписать C# код и заменить его на хранимую процедуру, чтобы избавиться от EF4
|
|||
---|---|---|---|
#18+
Ну... Давайте отложим до завтра... А то я могу чтонить обидное написать... По вашему описанию совершенно непонятно что тормозит... Код покажите. P.S.: то что Вы все-таки выложили... вызывает грусть... ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2013, 21:41 |
|
Помогите переписать C# код и заменить его на хранимую процедуру, чтобы избавиться от EF4
|
|||
---|---|---|---|
#18+
Если оставить только то, что имеет отношение к данному вопросу, то получится примерно так: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.06.2013, 12:13 |
|
Помогите переписать C# код и заменить его на хранимую процедуру, чтобы избавиться от EF4
|
|||
---|---|---|---|
#18+
buserНу... Давайте отложим до завтра... А то я могу чтонить обидное написать... По вашему описанию совершенно непонятно что тормозит... Код покажите. P.S.: то что Вы все-таки выложили... вызывает грусть... Кстати что грусть то у Вас вызывает? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.06.2013, 12:14 |
|
Помогите переписать C# код и заменить его на хранимую процедуру, чтобы избавиться от EF4
|
|||
---|---|---|---|
#18+
gun-gun2Причина, предположительно, в использовании не самой быстрой технологии EntityFramework4 Entity Framework тут вообще не при чем. gun-gun2Однако я совсем не знаю SQL до такой, по правде сказать, степени, что даже не знаю что мне гуглить. Вот в чем истинная причина. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.06.2013, 12:17 |
|
Помогите переписать C# код и заменить его на хранимую процедуру, чтобы избавиться от EF4
|
|||
---|---|---|---|
#18+
Проблема в непонимании, как работать с IQueryable и для чего оно нужно. Код: c# 1. 2.
Код: c# 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.06.2013, 12:20 |
|
Помогите переписать C# код и заменить его на хранимую процедуру, чтобы избавиться от EF4
|
|||
---|---|---|---|
#18+
Вот это тоже печальная картина: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
В двойном цикле в каждой итерации при bPropsOk == true ты передергиваешь базу данных. Это не есть гуд. Возможно, в качестве оптимизации рассмотреть инклюд (в начале): Код: c# 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.06.2013, 12:27 |
|
|
start [/forum/topic.php?fid=17&fpage=25&tid=1349990]: |
0ms |
get settings: |
12ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
41ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
61ms |
get tp. blocked users: |
2ms |
others: | 303ms |
total: | 446ms |
0 / 0 |