|
Требуется консультация эксперта (EF CF)
|
|||
---|---|---|---|
#18+
Здравствуйте. Перелопатил кучу информации и везде, либо примитивные примеры, либо встречал несколько на буржуйских сайтах описание моей ситуации, но у них почему-то никаких проблем. Надеюсь кто-нибудь сможет подсказать в какую сторону копать. Итак хочу сделать: универсальный IRepository <T> + EF CodeFirst, и вроде все просто кажется ) но сущностей может быть много, и все книжки учат создавать для каждой сущности в контексте DBSet на каждый вид. Но при таком раскладе теряется универсальность. В таком случае в репозитории мне еще надо проверять какая сущность была передана и вызывать именно этот DbSet. Предполагаемое решение: BaseEntity - интерфейс, который наследуют все сущности (через абстрактный класс тоже пробывал) Интерфейс контекста Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
Класс контекста Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
Дальше репозиторий: Интерфейс обычный CRUD Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9.
Код: sql 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.
Результат: вылетает исключение Код: sql 1.
Пробовал вариант с фиксированным DbSetами, тогда все работало, он и табличку сам создавал и записывал в нее данные. Но если после того как он создал табличку убрать DbSet и вернуть к варианту выше, то ругается уже на то, что модель изменилась. В отладчике смотрел, Entities действительно имеет тип DbSet<ПереданнаяСущность> и сохраняемый объект имеет такой же тип. Мне кажется тут что-то именно с маппингом на БД связано, может кто-то сталкивался, потому что плодить кучу сетов в одном контексте, а потом еще и репозитории как это по сути предлагают во многих статьях - считаю неправильным. Всем заранее большое спасибо, кто откликнется. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2013, 02:44 |
|
Требуется консультация эксперта (EF CF)
|
|||
---|---|---|---|
#18+
В общем "всем" спасибо, вроде нашел компромисс, путем создания в контексте ДбСетов для каждой сущности отдельно, но в остальном коде участвует только универсальный DbSet, который не выдает ошибок за счет того, что существует фиксированный экземпляр ДбСета для данной сущности. Если кто-то знает как обойтись без этого или как сделать правильнее, то пишите - не стесняйтесь :) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2013, 09:34 |
|
|
start [/forum/topic.php?fid=17&msg=38379498&tid=1349941]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
125ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
36ms |
get tp. blocked users: |
2ms |
others: | 271ms |
total: | 481ms |
0 / 0 |