|
Как правильно сделать выборку из БД, используя Entity Framework?
|
|||
---|---|---|---|
#18+
Здравствуйте, использую Entity Framework. В моём wfa приложении есть DataGridView, которому я задаю такой DataSource: Код: c# 1. 2.
Если задавать так, то всё работает (добавление, изменение), но тогда появляется проблема: в таблице есть поле menu_id и я хочу выводить не номер меню, а его название, но при такой выборке у меня это никак не получается. Однако получается получить название меню, используя такой запрос: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9.
Но появляется другая проблема, у меня перестаёт работать добавление, изменение (ошибка в этой строчке): Код: c# 1.
ProductInfo это свойство из 2-ой формы, которая возвращает объект типа Product: Код: c# 1. 2. 3. 4. 5. 6. 7.
Текст ошибки: Объекты, добавляемые к списку BindingSource, должны быть одного типа. Ошибка понятна, но совершенно не понимаю как её решить. Заранее спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2016, 20:36 |
|
Как правильно сделать выборку из БД, используя Entity Framework?
|
|||
---|---|---|---|
#18+
Daniil S., Жесть какая... биндинг на ToList? А если там товаров будет 100 тысяч? Умрёт твоё приложение. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
Т.е. как решить можно ошибку вида Объекты, добавляемые к списку BindingSource, должны быть одного типа . ...наверное надо работать с одним типом. В списке и добавляемый объекты должны быть одного типа. Одного типа! Никак иначе это решить нельзя, кроме как работать с одним типом. Какие ещё могут тут быть решения? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2016, 22:42 |
|
Как правильно сделать выборку из БД, используя Entity Framework?
|
|||
---|---|---|---|
#18+
hVostt, Спасибо, но у меня всё равно не получается. Дело в том, что у меня DataBase First приложение и EF сам сгенерировал мне классы, вот класс Product: Код: 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.
Пытаюсь сделать так, как вы мне написали: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Но тогда подчёркивает строку Код: c# 1.
говорит, что не может преобразовать тип string в RestrauntCMS.Menu Пожалуйста помогите найти компромисс. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2016, 11:09 |
|
Как правильно сделать выборку из БД, используя Entity Framework?
|
|||
---|---|---|---|
#18+
Daniil S., Тут надо поработать сделать свой источник, унаследованный от IBindingList. Внутри уже использовать запросы через EF. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2016, 15:51 |
|
Как правильно сделать выборку из БД, используя Entity Framework?
|
|||
---|---|---|---|
#18+
Daniil S., Нельзя использовать класс Product в запросах. Ты можешь запрашивать только чистые Product. Если хочешь другой набор данных, определи свой дополнительный класс. Я же показал в примере, создай отдельный класс ProductDto, он не должен быть классом EF и маппиться на таблицу. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2016, 16:00 |
|
Как правильно сделать выборку из БД, используя Entity Framework?
|
|||
---|---|---|---|
#18+
hVostt, Подскажите пожалуйста, что это означает и как это реализовать? hVosttон не должен быть классом EF и маппиться на таблицу. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2016, 17:56 |
|
Как правильно сделать выборку из БД, используя Entity Framework?
|
|||
---|---|---|---|
#18+
Daniil S., Это значит, что если EF сгенерировал классы, например, Product, значит эти классы нельзя использовать вот так: Код: c# 1.
можно только так: Код: c# 1.
Если ты хочешь выбрать отдельные поля, или поля из навигационных полей, например, там меню или чего ты хочешь, надо создавать свой отдельный класс и выбирать в него: Код: c# 1.
Видишь разницу? Product это класс который сгенерировал EF, а ProductDto это класс который ты сам создал. Ты можешь назвать его по-другому. Как ещё объяснить? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2016, 19:15 |
|
Как правильно сделать выборку из БД, используя Entity Framework?
|
|||
---|---|---|---|
#18+
Daniil S., Это касательно ошибки, которую ты хочешь победить. Но в целом, ты изначально всё делаешь неправильно. Найди какую-нибудь книжку, уроки, примеры какие-нибудь и изучай их. Одно дело подсказать, другое дело с нуля научить. На форуме никто тебя не научит, это невозможно. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2016, 19:17 |
|
|
start [/forum/topic.php?fid=17&msg=39370618&tid=1349331]: |
0ms |
get settings: |
12ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
162ms |
get topic data: |
13ms |
get forum data: |
2ms |
get page messages: |
54ms |
get tp. blocked users: |
2ms |
others: | 237ms |
total: | 505ms |
0 / 0 |