|
Создание объединения (join) в EF для доступа к полям связанных сущностей
|
|||
---|---|---|---|
#18+
Доброго времени суток, ребята! Есть у меня таблица в БД (Flood) и соответствующая ей сущность EF, которая имеет 2 внешних ключа (на таблицу Post и SolarActivity), которым в соответствие ставятся 2 виртуальных поля в классе сущности EF. Мне нужно чтобы у меня в List были объекты содержащие не ключи, а какое-то поле сущности этих ключей (ну т. е. показывало не "1", а то что соответствует данному ключу в связанной сущности - "Ваня"). Если я просто обращаюсь к этим полям, то мне выдаётся ссылка, а не нужный мне объект, который должен быть по идее по этой ссылки. В интернете нашёл решение с помощью создание объединения (join) по типу как это делается в SQL. Но не смотря на то, что объединение было выстроено вроде верно, его тест показал, что вместо значения нужного поля он почему-то возвращает какую-то длину Lenght? Почему так? Код: 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2018, 23:53 |
|
Создание объединения (join) в EF для доступа к полям связанных сущностей
|
|||
---|---|---|---|
#18+
Vlad__i__mir Код: c# 1.
Стоп-стоп. Не вали в одну кучу что возвращает запрос и что показывает грид. Vlad__i__mirобъединение было выстроено вроде верно, его тест показалнапиши Код: c# 1.
и посмотри в отладке, что получишь в qqq - это и будет тест объединения. А как это отобразит грид - вопрос немножко другой ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2018, 05:06 |
|
Создание объединения (join) в EF для доступа к полям связанных сущностей
|
|||
---|---|---|---|
#18+
Vlad__i__mirЕсли я просто обращаюсь к этим полям, то мне выдаётся ссылка, а не нужный мне объект, который должен быть по идее по этой ссылки.вот это расшифровать не смог ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2018, 05:10 |
|
Создание объединения (join) в EF для доступа к полям связанных сущностей
|
|||
---|---|---|---|
#18+
Vlad__i__mirну т. е. показывало не "1", а то что соответствует данному ключу в связанной сущности - "Ваня").кроме поля с кодом, если это про FK, надо в маппинг добавлять сам класс этого справочника по связи. Тогда будет и код id_user и сам юзер в виде класса user. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2018, 07:30 |
|
Создание объединения (join) в EF для доступа к полям связанных сущностей
|
|||
---|---|---|---|
#18+
Petro123кроме поля с кодом, если это про FK, надо в маппинг добавлять сам класс этого справочника по связи. Тогда будет и код id_user и сам юзер в виде класса user.Ну ТС вроде написал:Vlad__i__mirкоторым в соответствие ставятся 2 виртуальных поля в классе сущности EFто есть ссылки на сущности у него есть (виртуальные поля). Возможно, проблема с полями у него возникла та же самая, что и с джойнами. Вместо того, чтобы проверить результат запроса напрямую, он попытался отобразить его в гриде, увидел что-то не соответствующее его ожиданиям и начал усложнять себе жизнь ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2018, 08:00 |
|
Создание объединения (join) в EF для доступа к полям связанных сущностей
|
|||
---|---|---|---|
#18+
Shocker.Pro, Фиг знает. Я не понял ваще зачем эта простыня sql. Навигация Сущность.СвязаннаяСщность.Поле Должна работать. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2018, 08:35 |
|
Создание объединения (join) в EF для доступа к полям связанных сущностей
|
|||
---|---|---|---|
#18+
Vlad__i__mir Код: c# 1.
Учитывая, что имена свойств заданы не по соглашениям, фиг знает, что он там в модели наваял, в общем, нужно смотреть модель и запрос, который он сделал, а также знать подход (CF, DF, MF) и версию EF, маловато данных, короче. Пусть сначала разберется с джойнами, раз уже сделал их. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2018, 09:01 |
|
Создание объединения (join) в EF для доступа к полям связанных сущностей
|
|||
---|---|---|---|
#18+
Shocker.Pro, о, а если просто вот так прописать Код: c# 1. 2.
то всё нормально он формирует и отображает. Почему же тогда после применения Select() такое получается? Сама сущность: Код: 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2018, 16:05 |
|
Создание объединения (join) в EF для доступа к полям связанных сущностей
|
|||
---|---|---|---|
#18+
Petro123, авторЯ не понял ваще зачем эта простыня sql. Навигация Сущность.СвязаннаяСщность.Поле Должна работать. Я тоже очень хотел так, но у меня опять отображался этот Lenght. Теперь я проверил и увидел, что он верно формирует List, а отображает не верно. Как мне из сформированного списка выбрать сразу несколько нужных полей запросом Select()? Я пытался вот так, но это не верно: Код: c# 1. 2. 3. 4. 5. 6.
GetFloodEf() - метод возвращающий List объектов: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2018, 16:34 |
|
Создание объединения (join) в EF для доступа к полям связанных сущностей
|
|||
---|---|---|---|
#18+
Vlad__i__mirGetFloodEf() - метод возвращающий List объектов: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Не понял. Это всё равно одной строке context.Floods.ToList(); ? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2018, 16:38 |
|
Создание объединения (join) в EF для доступа к полям связанных сущностей
|
|||
---|---|---|---|
#18+
Vlad__i__mirСама сущность:сделай сущность из двух полей. Остальное выкинь и покажи проблему. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2018, 16:41 |
|
Создание объединения (join) в EF для доступа к полям связанных сущностей
|
|||
---|---|---|---|
#18+
Petro123, Выгружает всё верно - здесь проблем нет, в сущности проблем тоже нет. Проблемы выбрать из выгруженного списка только нужные поля, а не все подряд. Я хотел сделать это с помощью Select(), но не знаю как прописать чтобы он выбирал больше 1-го поля. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2018, 17:41 |
|
Создание объединения (join) в EF для доступа к полям связанных сущностей
|
|||
---|---|---|---|
#18+
Petro123, авторНе понял. Это всё равно одной строке context.Floods.ToList(); ? Не суть. Работает верно. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2018, 17:42 |
|
Создание объединения (join) в EF для доступа к полям связанных сущностей
|
|||
---|---|---|---|
#18+
Shocker.Pro, Код: c# 1.
Вот это верно. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2018, 17:46 |
|
Создание объединения (join) в EF для доступа к полям связанных сущностей
|
|||
---|---|---|---|
#18+
Vlad__i__mir, Т.е. топик решён? Суть то скажи). ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2018, 18:35 |
|
Создание объединения (join) в EF для доступа к полям связанных сущностей
|
|||
---|---|---|---|
#18+
Petro123, авторТ.е. топик решён? Суть то скажи). Ну не совсем решён - частично. Осталась разобраться почему он не верно отображает сформированный List объектов после применения Select(). И немного другая, но смежная проблема: как отобрать несколько конкретных полей для отображения, а не все? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2018, 19:41 |
|
Создание объединения (join) в EF для доступа к полям связанных сущностей
|
|||
---|---|---|---|
#18+
Vlad__i__mirОсталась разобраться почему он не верно отображает сформированный List объектов после применения Select(). Значит опять по кругу. МИНИМАЛЬНЫЙ код и пример проблемы. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2018, 19:52 |
|
Создание объединения (join) в EF для доступа к полям связанных сущностей
|
|||
---|---|---|---|
#18+
Petro123, Вот так вот всё отображается нормально: Код: c# 1. 2.
а вот так вместо значения свойства выводит колонку Lenght Код: c# 1.
Код формирования списка объектов: Код: 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.
Сама сущность: Код: 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2018, 21:09 |
|
Создание объединения (join) в EF для доступа к полям связанных сущностей
|
|||
---|---|---|---|
#18+
Vlad__i__mir, Ты читаешь что я тебе писал? Упрощай запрос до минимума полей. Упрощай сущность до одного двух полей. Или скопипастил где запрос? ... Это если не рабочий запрос. Где твой вопрос с вопросительным знаком? .. Это работа программиста, без всякого грида вывести в консоль результаты запроса и отлаживать его. Начиная с одной колонки id транзакции. После этого добавляя колонки и уточняя результат. .... Где скрин грида или того что выводится? Работай! Удачи! ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2018, 10:37 |
|
Создание объединения (join) в EF для доступа к полям связанных сущностей
|
|||
---|---|---|---|
#18+
Petro123, авторЭто если не рабочий запрос. Где твой вопрос с вопросительным знаком? Я же вроде понятно написал: авторВот так вот всё отображается нормально: Код: c# 1. 2.
а вот так вместо значения свойства выводит колонку Lenght Код: c# 1.
В этом и есть проблема. Petro123Ты читаешь что я тебе писал? Упрощай запрос до минимума полей. Упрощай сущность до одного двух полей. Или скопипастил где запрос? Нет смысла упрощать до 1-го - 2-х полей, т.к. у меня задача отобразить навигационные поля, у меня их уже 2-а. И потом, уже писал, что если не применять команду Select(), то всё нормально отображается проблема возникает уже тогда, когда я хочу отобрать только нужные поля из всех. Вот урезанный насколько это возможно пример моей задачи: Код: 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2018, 16:41 |
|
Создание объединения (join) в EF для доступа к полям связанных сущностей
|
|||
---|---|---|---|
#18+
Vlad__i__mir Код: c# 1.
Ну? а какого эффекта ты хочешь добиться? Ты пытаешься отобразить List<string> в гриде. Соответственно каждая строка - это один стринг. Грид пытается построить набор столбцов на базе свойств типа string. Нашел у него свойство Length и отобразил его значение. Других свойств не нашел. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2018, 17:26 |
|
Создание объединения (join) в EF для доступа к полям связанных сущностей
|
|||
---|---|---|---|
#18+
Shocker.ProVlad__i__mir Код: c# 1.
Ну? а какого эффекта ты хочешь добиться? Ты пытаешься отобразить List<string> в гриде. Соответственно каждая строка - это один стринг. Грид пытается построить набор столбцов на базе свойств типа string. Нашел у него свойство Length и отобразил его значение. Других свойств не нашел. Причем тут вообще select и все эти простыни запросов. Не можешь уложить в голове и отладить картину в целом - отлаживай кусками. Я же сказал. Запрос - это одно, отображение в гриде - это другое. Создаешь тестовый List<string> из трех строк и отлаживаешь его отображение в гриде. И этот вопрос к тематике этого подфорума не имеет отношения. Тебе для того даден SOLID, чтобы ты не пытался в один и тот же класс засунуть отображение в гриде и запрос в БД. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2018, 17:29 |
|
Создание объединения (join) в EF для доступа к полям связанных сущностей
|
|||
---|---|---|---|
#18+
Shocker.Pro, авторТебе для того даден SOLID, чтобы ты не пытался в один и тот же класс засунуть отображение в гриде и запрос в БД. У меня это в разных классах: сущность в одном, запрос в другом, а ГридВью в третьем. авторПричем тут вообще select и все эти простыни запросов. Не можешь уложить в голове и отладить картину в целом - отлаживай кусками. Я же сказал. Запрос - это одно, отображение в гриде - это другое. Это я понял, написал об этом ранее. авторСоздаешь тестовый List<string> из трех строк и отлаживаешь его отображение в гриде. И этот вопрос к тематике этого подфорума не имеет отношения. А вот как отладить не понятно, но как было сказано это в другой подфорум. Спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2018, 18:52 |
|
Создание объединения (join) в EF для доступа к полям связанных сущностей
|
|||
---|---|---|---|
#18+
Vlad__i__mirУ меня это в разных классах: сущность в одном, запрос в другом, а ГридВью в третьем.Если бы это было так, то на входе в класс отображения был бы List<string> и ты не задавался бы вопросом, правильно или неправильно у тебя работает join. Тебе бы компилятор не дал запутаться. А так как ты пытаешься присвоить источнику данных грида результат запроса напрямую, не понимая, какой он имеет тип, я делаю вывод, что у тебя все в одном классе, и не надо рассказывать сказки ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2018, 19:46 |
|
Создание объединения (join) в EF для доступа к полям связанных сущностей
|
|||
---|---|---|---|
#18+
Shocker.Pro, для проверки работоспособности join поместил в класс формы, потому что, чтобы вернуть его из метода другого класса понадобилось бы прописывать новый класс для хранения результатов joina, т.к. результат join - var, записывать его туда, а мне нужно было пока просто убедиться, что это работает. А всё остальное - сущность, контекст, метод выгрузки сущности, все в отдельных классах ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2018, 19:54 |
|
|
start [/forum/topic.php?fid=17&fpage=5&tid=1349178]: |
0ms |
get settings: |
10ms |
get forum list: |
17ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
41ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
64ms |
get tp. blocked users: |
2ms |
others: | 257ms |
total: | 415ms |
0 / 0 |