|
Постоянно диспозится контекст.
|
|||
---|---|---|---|
#18+
Исходные данные. CodeFirst, Autofac До этого был Link2Sql и весь слой данных был в основном проекте. Я все переписал на EF CodeFirst. Теперь постоянно получаю ошибку: DBContext has been disposed Есть класс: Код: 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. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109.
Что не так и как все поправить? Autofac регистрация: Код: 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2016, 09:39 |
|
Постоянно диспозится контекст.
|
|||
---|---|---|---|
#18+
Убрать Dispose из DataManager. За время жизни контекста у тебя отвечает Autofac через регистрацию InstancePerHttpRequest. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2016, 10:45 |
|
Постоянно диспозится контекст.
|
|||
---|---|---|---|
#18+
Алексей К, Не помогло. Советуют не инжектить контекст в репо, а там его создавать каждый раз в каждом методе. Типа: Код: c# 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2016, 11:28 |
|
Постоянно диспозится контекст.
|
|||
---|---|---|---|
#18+
PavluhaНе помогло.Значит показал не все особенности своего кода. Вероятно ещё какие-то сервисы сами "диспозят" свои зависимости. PavluhaСоветуют не инжектить контекст в репо, а там его создавать каждый раз в каждом методе. Типа: Код: c# 1. 2. 3.
Такой подход имеет свои недостатки. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2016, 11:36 |
|
Постоянно диспозится контекст.
|
|||
---|---|---|---|
#18+
Алексей К, Я немного поменял автофак на такое: А больше ничего. Dispose убрал Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2016, 11:48 |
|
Постоянно диспозится контекст.
|
|||
---|---|---|---|
#18+
Код: c# 1. 2. 3.
Может из-за этого? Membership.Provider и Roles.Provider используют DataContext? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2016, 11:56 |
|
Постоянно диспозится контекст.
|
|||
---|---|---|---|
#18+
PavluhaАлексей К, Не помогло. Советуют не инжектить контекст в репо, а там его создавать каждый раз в каждом методе. Типа: Код: c# 1. 2. 3.
плохой совет. несколько репо в одном сервисе не получится нормально использовать ... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2016, 12:01 |
|
Постоянно диспозится контекст.
|
|||
---|---|---|---|
#18+
Перегонщик перекупкиPavluhaАлексей К, Не помогло. Советуют не инжектить контекст в репо, а там его создавать каждый раз в каждом методе. Типа: Код: c# 1. 2. 3.
плохой совет. несколько репо в одном сервисе не получится нормально использовать Наоборот, это правильный совет. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2016, 12:04 |
|
Постоянно диспозится контекст.
|
|||
---|---|---|---|
#18+
Алексей К, Провайдера работают через репо Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9.
Это может повлиять как-то? Дело в том, что ошибка возникает, в момент доступа через IDataManager ... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2016, 12:05 |
|
Постоянно диспозится контекст.
|
|||
---|---|---|---|
#18+
Перегонщик перекупки, Т.е. стоит убрать IDataManager и непосредственно инжектить нужные репо в контроллеры? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2016, 12:06 |
|
Постоянно диспозится контекст.
|
|||
---|---|---|---|
#18+
AxeleronПерегонщик перекупкипропущено... плохой совет. несколько репо в одном сервисе не получится нормально использовать Наоборот, это правильный совет.Так не бывает. Всё имеет свои преимущества и недостатки. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2016, 12:07 |
|
Постоянно диспозится контекст.
|
|||
---|---|---|---|
#18+
PavluhaАлексей К, Провайдера работают через репо Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9.
Это может повлиять как-то? Дело в том, что ошибка возникает, в момент доступа через IDataManagerКакое время жизни у UserProvider? Он синглетон? Сравни его время жизни с временем жизни области, из которой ты в него инжектишь свойства. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2016, 12:09 |
|
Постоянно диспозится контекст.
|
|||
---|---|---|---|
#18+
PavluhaПерегонщик перекупки, Т.е. стоит убрать IDataManager и непосредственно инжектить нужные репо в контроллеры? IDataManager - по внешнему виду напоминает сервис (там не место дбконтекст). вот такие сервисы и надо инжектить в контроллеры. а дбконтекст инжектить в репо. а временем жизни дбконтекст пусть управляет IоC. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2016, 12:10 |
|
Постоянно диспозится контекст.
|
|||
---|---|---|---|
#18+
Перегонщик перекупкиPavluhaАлексей К, Не помогло. Советуют не инжектить контекст в репо, а там его создавать каждый раз в каждом методе. Типа: Код: c# 1. 2. 3.
плохой совет. несколько репо в одном сервисе не получится нормально использоватьДа: нежелательные распределённые транзакции, невозможность комбинировать запросы и прочие неприятности. Но если речь идёт о чём-то простом, то почему бы и нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2016, 12:11 |
|
Постоянно диспозится контекст.
|
|||
---|---|---|---|
#18+
Алексей К, Нет, не синглтон. Это реализация кастомного провайдера для ролей и пользователей. Про время жизни ХЗ. Нигде не задавал ... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2016, 12:20 |
|
Постоянно диспозится контекст.
|
|||
---|---|---|---|
#18+
Перегонщик перекупки, Это реализация UnitOfWork, поэтому там и контекст. Могу убрать, но боюсь это не поможет. Сейчас проверю ... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2016, 12:22 |
|
Постоянно диспозится контекст.
|
|||
---|---|---|---|
#18+
Убрал контекст и DataManager-а, все по прежнему ... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2016, 12:34 |
|
Постоянно диспозится контекст.
|
|||
---|---|---|---|
#18+
PavluhaАлексей К, Нет, не синглтон. Это реализация кастомного провайдера для ролей и пользователей. Про время жизни ХЗ. Нигде не задавалЯ бы начал с этого, если "ручной" Dispose зависимостей везде убран. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2016, 13:39 |
|
Постоянно диспозится контекст.
|
|||
---|---|---|---|
#18+
Алексей К, Каким способом это поможет, если в провайдеры инъектится репо, как свойство, которое никак не связано, с объектами в DataManager ... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2016, 13:51 |
|
Постоянно диспозится контекст.
|
|||
---|---|---|---|
#18+
PavluhaАлексей К, Каким способом это поможет, если в провайдеры инъектится репо, как свойство, которое никак не связано, с объектами в DataManagerНу тогда пора перейти от гаданий к работе с отладчиком, просмотру StackTrace в исключении и прочим способам диагностики ошибок. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2016, 16:05 |
|
Постоянно диспозится контекст.
|
|||
---|---|---|---|
#18+
Алексей КPavluhaАлексей К, Каким способом это поможет, если в провайдеры инъектится репо, как свойство, которое никак не связано, с объектами в DataManagerНу тогда пора перейти от гаданий к работе с отладчиком, просмотру StackTrace в исключении и прочим способам диагностики ошибок. :-) может поможет: логировать ID дбсессии ... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2016, 18:05 |
|
Постоянно диспозится контекст.
|
|||
---|---|---|---|
#18+
Алексей К, вы были правы. Трабла была с синглтоном. Отсюда вопрос, как тогда с ним работать Было так: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
Я переделал на такое Код: c# 1. 2. 3. 4. 5.
Или вообще синглтон убирать? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2016, 23:46 |
|
Постоянно диспозится контекст.
|
|||
---|---|---|---|
#18+
Немного перепутал. Было так: Код: c# 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2016, 23:48 |
|
Постоянно диспозится контекст.
|
|||
---|---|---|---|
#18+
PavluhaЯ переделал на такое Код: c# 1. 2. 3. 4. 5.
Вероятно лучше так, через локальную переменную: Код: c# 1. 2. 3. 4. 5.
PavluhaИли вообще синглтон убирать?Ну оцени все плюсы и минусы синглетона в твоей ситуации. Я бы убрал или, если он действительно нужен в одном экземпляре, создавал бы его контейнером с помощью регистрации Single Instance . ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2016, 05:08 |
|
|
start [/forum/topic.php?fid=17&msg=39214509&tid=1349406]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
173ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
59ms |
get tp. blocked users: |
1ms |
others: | 240ms |
total: | 518ms |
0 / 0 |