Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
ASP.NET EF ICollection NULL
|
|||
|---|---|---|---|
|
#18+
Доброго времени суток. Решил поэксперементировать с EntityFramework Code First и ASP.NET. Делал все по аналогии с видео с сайта asp.net раздел Learning \ MVC. Собственно проблема вот в чем: AppStorage.Instance.MainForumPartitions.ToList() - нормально возвращает все объекты [MainForumPartition], НО у этих объектов есть ICollection<ForumPartition> ForumPartitions - и это свойство всегда NULL, и почему не пойму хоть застрелите. Google тыркал как мог но найти не смог почему такое. При условии что в видео с asp.net сайта коллекция возвращается нормальная 1. БД - "New Item" в VS - и там "SQL Server Database". 2. Класс контекст определён ниже: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 3. У него DbSet MainForumPartition определён Код: c# 1. 2. 3. 4. 5. 6. 4. ForumPartition : Код: c# 1. 2. 3. 4. 5. 6. 7. 5. Конфигурация миграции Код: 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. 6. SELECT из файла БД, показывающий что данные есть и верные: ForumPartitions: Код: sql 1. 2. MainForumPartitions: Код: sql 1. 2. Спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2014, 12:13 |
|
||
|
ASP.NET EF ICollection NULL
|
|||
|---|---|---|---|
|
#18+
ДобрыйКотНО у этих объектов есть ICollection<ForumPartition> ForumPartitions - и это свойство всегда NULL, и почему не пойму хоть застрелите. необходимо указать для коллекций модификатор virtual . если не указывать этот модификатор, тогда надо вручную указывать какие зависимости подгружать, например, с помощью функции Include(). короче, надо так: Код: c# 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2014, 14:56 |
|
||
|
ASP.NET EF ICollection NULL
|
|||
|---|---|---|---|
|
#18+
ДобрыйКот, и ещё, так никогда не делайте: Код: c# 1. 2. 3. только так: Код: c# 1. 2. 3. где, DefaultConnection — имя строки соединения, указанной в конфигурационном файле (web.config) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2014, 14:58 |
|
||
|
ASP.NET EF ICollection NULL
|
|||
|---|---|---|---|
|
#18+
hVostt, Спасибо большое, действительно пометив virtual коллекция при обращении начала грузиться. И это помогло понять вектор заскопок - а именно Loading Related Entities что со свзяками тут не всё так просто. Но конечно на обучалке с asp.net-та всё же не ясно почему без virtual-ов, .Include-ов но главное для изучения ASP хватит, так как он пока явзяется целевой изучаемой технологией А по поводу конструктора с Connection String-ом это тестовый вариант, но мне больше нравятся варианты с нацеливанием на БД кодом, и заданием строчки подключения к примеру через Админку... И ещё такой вопрос, в плане ресурсов и производительности общение с базой через Singleton Instance наследника DbContext будет лучше или хуже. Как бы логически - русурсов должно быть затрачено меньше, но в реальности это чёрный ящик.. Не подскажите чем Вы пользуетесь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2014, 15:22 |
|
||
|
ASP.NET EF ICollection NULL
|
|||
|---|---|---|---|
|
#18+
ДобрыйКотИ ещё такой вопрос, в плане ресурсов и производительности общение с базой через Singleton Instance наследника DbContext будет лучше или хуже. Как бы логически - русурсов должно быть затрачено меньше, но в реальности это чёрный ящик.. Не подскажите чем Вы пользуетесь? правильно это Instance Per Request, т.е. один экземпляр DbContext на обработку запроса. но ни в коем случае не статический экземпляр! ещё в учебных целях можно создавать DbContext по месту использования и тут же его уничтожать, вот так: Код: c# 1. 2. 3. 4. но это неправильно. только для учебных примеров, или для совсем-совсем простых одноразовых задач. серьёзные дядьки так делать не должны, не подобает я пользуюсь DI-контейнером (например, Autofac), который решает эту задачу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2014, 15:39 |
|
||
|
|

start [/forum/topic.php?fid=18&fpage=76&tid=1357465]: |
0ms |
get settings: |
6ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
24ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
24ms |
get tp. blocked users: |
1ms |
| others: | 221ms |
| total: | 308ms |

| 0 / 0 |
