Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
11.10.2012, 21:43
|
|||
---|---|---|---|
|
|||
Динамический объект в 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:48
|
|||
---|---|---|---|
|
|||
Динамический объект в Linq запросе |
|||
#18+
Описался, вот запрос: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
... |
|||
:
Нравится:
Не нравится:
|
|||
|
12.10.2012, 12:10
|
|||
---|---|---|---|
|
|||
Динамический объект в Linq запросе |
|||
#18+
hex.style, Чет не понял, а в чем вопрос-то? В данном запросе на выходе будет список объектов типа Child. Разве не оно надо? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
12.10.2012, 14:26
|
|||
---|---|---|---|
|
|||
Динамический объект в Linq запросе |
|||
#18+
Нет, мне надо, чтобы на выходе результат остался тот же, но вот это Код: c# 1. 2. 3. 4. 5. 6. 7.
Заменить на что-нибудь вроде этого: Код: c# 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
|
12.10.2012, 14:46
|
|||
---|---|---|---|
|
|||
Динамический объект в Linq запросе |
|||
#18+
hex.style, Мнэ, мнэ.. Ну, если я правильно понял задачу, то как-то так: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
... |
|||
:
Нравится:
Не нравится:
|
|||
|
12.10.2012, 14:54
|
|||
---|---|---|---|
|
|||
Динамический объект в Linq запросе |
|||
#18+
Я как раз и хочу избежать вот этих: Код: c# 1. 2. 3. 4.
Присваивать хочу во всех случаях только одно поле: Name = reference.Name Остальные поля я хочу брать из сущности refitems Другими словами меня полностью устраивает select refitems если бы не поле Name в сущности reference Эта сущность с течением времени может меняться. Следовательно, придется поддерживать изменения как в EDMX-файле, который генерится из БД, так и в самом коде. Я привел только единичный случай. Полей может быть не 3, а, скажем, 50 !!! ... |
|||
:
Нравится:
Не нравится:
|
|||
|
12.10.2012, 15:51
|
|||
---|---|---|---|
|
|||
Динамический объект в Linq запросе |
|||
#18+
hex.style, Ну, вот так, к примеру: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9.
Можно, конечно, еще в дебри улезть и поэкспериментировать с AsParallel().ForAll().. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
12.10.2012, 18:49
|
|||
---|---|---|---|
|
|||
Динамический объект в 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, 19:19
|
|||
---|---|---|---|
Динамический объект в 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:26
|
|||
---|---|---|---|
Динамический объект в Linq запросе |
|||
#18+
да в базеу тебя эти две таблице связаны ключами ? Reference RefItems ... |
|||
:
Нравится:
Не нравится:
|
|||
|
12.10.2012, 22:54
|
|||
---|---|---|---|
|
|||
Динамический объект в Linq запросе |
|||
#18+
Да. На самом деле в базе одна большая таблица Reference, которая является генератором первичных ключей для более мелких таблиц (в плане объема). Она содержит в себе имя. Это типа общего справочника с парой ID-значение. Другие таблицы ссылаются на нее (PK==FK) (типа RefItems) и содержат информацию, расширяющую Reference. Там около 70 таблиц. И у них колонок может быть туева хуча. Я могу делать каждый раз View и использовать его как вариант, но и его придется поддерживать. Хотя трудозатрат меньше, но не намного. Если бы можно было динамически генерировать класс, заставлять писать в него значения, и заодно предоставить информацию о его типе... но это, наверно, пока из ряда фантастики). Пока остановился на варианте с view. Если у кого есть еще соображения, поделитесь, пожалуйста! p.s. все эти танцы с бубном на счет таблиц лишь для того, чтобы в оперативную информацию писать только ключи (int) и ничего более. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
12.10.2012, 23:25
|
|||
---|---|---|---|
|
|||
Динамический объект в Linq запросе |
|||
#18+
По поводу IEnumerable и IQueryable - спасибо за информацию! Посмотрел профилер: IEnumerable мне нагенерил тут всякого)) ... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/topic.php?fid=17&mobile=1&tid=1350215]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
150ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
2ms |
others: | 303ms |
total: | 549ms |
0 / 0 |