|
|
|
Динамический объект в Linq запросе
|
|||
|---|---|---|---|
|
#18+
Что имеем: 2 таблицы, запрос на выборку с JOIN. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. Задача такая: динамически генерировать класс Child на основе сущности RefItems и добавлять поле Name из reference. Подскажите, в какую сторону копать? Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2012, 21:43 |
|
||
|
Динамический объект в Linq запросе
|
|||
|---|---|---|---|
|
#18+
Описался, вот запрос: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2012, 21:48 |
|
||
|
Динамический объект в Linq запросе
|
|||
|---|---|---|---|
|
#18+
hex.style, Чет не понял, а в чем вопрос-то? В данном запросе на выходе будет список объектов типа Child. Разве не оно надо? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2012, 12:10 |
|
||
|
Динамический объект в Linq запросе
|
|||
|---|---|---|---|
|
#18+
Нет, мне надо, чтобы на выходе результат остался тот же, но вот это Код: c# 1. 2. 3. 4. 5. 6. 7. Заменить на что-нибудь вроде этого: Код: c# 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2012, 14:26 |
|
||
|
Динамический объект в Linq запросе
|
|||
|---|---|---|---|
|
#18+
hex.style, Мнэ, мнэ.. Ну, если я правильно понял задачу, то как-то так: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2012, 14:46 |
|
||
|
Динамический объект в Linq запросе
|
|||
|---|---|---|---|
|
#18+
Я как раз и хочу избежать вот этих: Код: c# 1. 2. 3. 4. Присваивать хочу во всех случаях только одно поле: Name = reference.Name Остальные поля я хочу брать из сущности refitems Другими словами меня полностью устраивает select refitems если бы не поле Name в сущности reference Эта сущность с течением времени может меняться. Следовательно, придется поддерживать изменения как в EDMX-файле, который генерится из БД, так и в самом коде. Я привел только единичный случай. Полей может быть не 3, а, скажем, 50 !!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2012, 14:54 |
|
||
|
Динамический объект в Linq запросе
|
|||
|---|---|---|---|
|
#18+
hex.style, Ну, вот так, к примеру: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. Можно, конечно, еще в дебри улезть и поэкспериментировать с AsParallel().ForAll().. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2012, 15:51 |
|
||
|
Динамический объект в Linq запросе
|
|||
|---|---|---|---|
|
#18+
Доковырялся до подобного: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. Ошибка: Выражению LINQ to Entities не удается распознать метод "System.Object SetNameAndGroupID(System.Object, System.String, Int32)", поэтому его нельзя преобразовать в выражение хранилища. Вот что ему не так? Заранее тип хочет знать? Как ему его скормить по-человечески?) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2012, 18:49 |
|
||
|
Динамический объект в Linq запросе
|
|||
|---|---|---|---|
|
#18+
hex.styleДоковырялся до подобного: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. Ошибка: Выражению LINQ to Entities не удается распознать метод "System.Object SetNameAndGroupID(System.Object, System.String, Int32)", поэтому его нельзя преобразовать в выражение хранилища. Вот что ему не так? Заранее тип хочет знать? Как ему его скормить по-человечески?) все правильно, читать что такое IQueryable и что такое IEnumerable и разницу между ними а данная конструкция заработает тогда, когда запихнешь метод SetNameAndGroupID на sql сервер:) з.ы предложение выше, просто намек в чем у тебя ошибка ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2012, 19:19 |
|
||
|
Динамический объект в Linq запросе
|
|||
|---|---|---|---|
|
#18+
да в базеу тебя эти две таблице связаны ключами ? Reference RefItems ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2012, 19:26 |
|
||
|
Динамический объект в Linq запросе
|
|||
|---|---|---|---|
|
#18+
Да. На самом деле в базе одна большая таблица Reference, которая является генератором первичных ключей для более мелких таблиц (в плане объема). Она содержит в себе имя. Это типа общего справочника с парой ID-значение. Другие таблицы ссылаются на нее (PK==FK) (типа RefItems) и содержат информацию, расширяющую Reference. Там около 70 таблиц. И у них колонок может быть туева хуча. Я могу делать каждый раз View и использовать его как вариант, но и его придется поддерживать. Хотя трудозатрат меньше, но не намного. Если бы можно было динамически генерировать класс, заставлять писать в него значения, и заодно предоставить информацию о его типе... но это, наверно, пока из ряда фантастики). Пока остановился на варианте с view. Если у кого есть еще соображения, поделитесь, пожалуйста! p.s. все эти танцы с бубном на счет таблиц лишь для того, чтобы в оперативную информацию писать только ключи (int) и ничего более. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2012, 22:54 |
|
||
|
Динамический объект в Linq запросе
|
|||
|---|---|---|---|
|
#18+
По поводу IEnumerable и IQueryable - спасибо за информацию! Посмотрел профилер: IEnumerable мне нагенерил тут всякого)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2012, 23:25 |
|
||
|
|

start [/forum/topic.php?fid=17&msg=37998315&tid=1350215]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
146ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
| others: | 12ms |
| total: | 243ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...