|
Динамический объект в 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&fpage=31&tid=1350215]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
44ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
others: | 314ms |
total: | 443ms |
0 / 0 |