|
|
|
LINQ-Вопрос господину Гу и господину Зы: "Что делать если всё плохо?"
|
|||
|---|---|---|---|
|
#18+
Привет всем! Вопрос господину Гу и господину Зы, что делать если LINQ запрос сломался? Как его отладить? Раньше запускали SQl Profiller и без проблем! А теперь то что? Проблема возникает в цепочка типа Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2008, 12:54 |
|
||
|
LINQ-Вопрос господину Гу и господину Зы: "Что делать если всё плохо?"
|
|||
|---|---|---|---|
|
#18+
Ошибка исчезает если член класса fOtborDoc передать как параметр Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2008, 14:15 |
|
||
|
LINQ-Вопрос господину Гу и господину Зы: "Что делать если всё плохо?"
|
|||
|---|---|---|---|
|
#18+
что такое fOtborDoc? словарь, хитрый объект, ещё что-то? сохрани fOtborDoc["dg_num"].value.ToString() в строковую переменную и используй её в вызове Contains твой код кстати можно было бы написать немного проще, без этой галиматьи, которая только усложняет восприятие var query = this.Dogovor; // ?? db.Dogovor? ну ты блин и называть переменные и объекты if(condition1==true) query = query.Where(p=>p.dg_num.Contains(someValue)); if(condition2==true) query = query.Where(p=>p.key==someValue2); return query; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2008, 14:31 |
|
||
|
LINQ-Вопрос господину Гу и господину Зы: "Что делать если всё плохо?"
|
|||
|---|---|---|---|
|
#18+
зычто такое fOtborDoc? словарь, хитрый объект, ещё что-то? fOtborDoc - это экземпляр наследник словарика Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. var query = this.Dogovor; // ?? db.Dogovor? ну ты блин и называть переменные и объекты if(condition1==true) query = query.Where(p=>p.dg_num.Contains(someValue)); if(condition2==true) query = query.Where(p=>p.key==someValue2); return query; У меня достаточно передать FOtborDoc как параметр и всё работает, если как члену класса копец! Как это всё отлаживать? Присоединится к исходным текстам? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2008, 15:25 |
|
||
|
LINQ-Вопрос господину Гу и господину Зы: "Что делать если всё плохо?"
|
|||
|---|---|---|---|
|
#18+
старый способ через SQL Profiler все еще в почете. Кроме того, с LINQ есть два альтернативных пути: 1) после создания query можно поднести в дебаггере к нему мышку, и тебе отобразится SQL запрос 2) в DataContext есть свойство Log, можно ловить в коде все SQL запросы, которые шлются на скуль сервер, и писать их куда хочешь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2008, 15:42 |
|
||
|
LINQ-Вопрос господину Гу и господину Зы: "Что делать если всё плохо?"
|
|||
|---|---|---|---|
|
#18+
зы var query = this.Dogovor; // ?? db.Dogovor? ну ты блин и называть переменные и объекты if(condition1==true) query = query.Where(p=>p.dg_num.Contains(someValue)); if(condition2==true) query = query.Where(p=>p.key==someValue2); return query; db.Dogovor это таблица System.Data.Linq.Table<Dogovor>. Так просто нельзя! Какой тип возврата return query? Это раз и опять обращение к словарику отборов как члену класса приводит к ошибке Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2008, 15:52 |
|
||
|
LINQ-Вопрос господину Гу и господину Зы: "Что делать если всё плохо?"
|
|||
|---|---|---|---|
|
#18+
Работает если сохранить в локальные переменные Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2008, 16:06 |
|
||
|
LINQ-Вопрос господину Гу и господину Зы: "Что делать если всё плохо?"
|
|||
|---|---|---|---|
|
#18+
Bill Great Работает если сохранить в локальные переменные Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. не знаю, у меня все работает. В твоем кривом коде неудивительно что что-то может не работать. Вообще DLINQ анализирует выражение и пытаетася преобразовать его в SQL запрос, это не очень тривиальная задача, возможно что-то ты перемудрил со своим классом и ему не нравится. У тебя RTM? Кстати замени эту галиматью Код: plaintext 1. Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2008, 16:49 |
|
||
|
LINQ-Вопрос господину Гу и господину Зы: "Что делать если всё плохо?"
|
|||
|---|---|---|---|
|
#18+
зы не знаю, у меня все работает. В твоем кривом коде неудивительно что что-то может не работать. Вообще DLINQ анализирует выражение и пытаетася преобразовать его в SQL запрос, это не очень тривиальная задача, возможно что-то ты перемудрил со своим классом и ему не нравится. У тебя RTM? Кстати замени эту галиматью Код: plaintext 1. Код: plaintext У меня RTM только что присланная в Москву Microsoft Visual Studio 2008 Version 9.0.21022.8 RTM Microsoft .NET Framework Version 3.5 Microsoft Visual C# 2008 91899-270-9028817-60340 Microsoft Visual Studio Team System 2008 Development Edition 91899-270-9028817-60340 ты всегда сохраняешь в локальные переменные? К этому надо привыкнуть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2008, 18:16 |
|
||
|
LINQ-Вопрос господину Гу и господину Зы: "Что делать если всё плохо?"
|
|||
|---|---|---|---|
|
#18+
я не всегда сохраняю в локальные переменные, у меня просто почему-то нет таких ужасных конструкций :) попробовал воспроизвести твою, разве что только класс свой наследованием не создавал - все работало ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2008, 19:06 |
|
||
|
LINQ-Вопрос господину Гу и господину Зы: "Что делать если всё плохо?"
|
|||
|---|---|---|---|
|
#18+
зыя не всегда сохраняю в локальные переменные, у меня просто почему-то нет таких ужасных конструкций :) попробовал воспроизвести твою, разве что только класс свой наследованием не создавал - все работало К сожалению работает vs не работает зависит от мелочей :-))) Важно что словарик отбора член класса DataContext. То что текст длинный - отбор по всем полям. Чего тут ужасного? Да конечно можно так Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2008, 20:03 |
|
||
|
LINQ-Вопрос господину Гу и господину Зы: "Что делать если всё плохо?"
|
|||
|---|---|---|---|
|
#18+
Bill GreatЧего тут ужасного? Индексация строковыми литералами, fOtborPrihNakl, dg_num, Dogovor, fOtborDoc. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2008, 20:12 |
|
||
|
LINQ-Вопрос господину Гу и господину Зы: "Что делать если всё плохо?"
|
|||
|---|---|---|---|
|
#18+
Bill GreatА как бы ты реализовал отборы колонкам таблицы? 1) создал бы статический список предикатов: ключ в колонке - предикат 2) написал бы итератор Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2008, 20:36 |
|
||
|
LINQ-Вопрос господину Гу и господину Зы: "Что делать если всё плохо?"
|
|||
|---|---|---|---|
|
#18+
зы Bill GreatА как бы ты реализовал отборы колонкам таблицы? 1) создал бы статический список предикатов: ключ в колонке - предикат 2) написал бы итератор Код: plaintext Hah! Но так НЕ РАБОТАЕТ!!!!! Нельзя писать внeтри foreach!!!! Смотри свои же умные объяснения. Я создал максимально короткий НЕРАБОТАЮЩИЙ пример, каждый может проверить! См. новый тему! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2008, 12:38 |
|
||
|
LINQ-Вопрос господину Гу и господину Зы: "Что делать если всё плохо?"
|
|||
|---|---|---|---|
|
#18+
Bill Great Hah! Но так НЕ РАБОТАЕТ!!!!! Нельзя писать внeтри foreach!!!! Смотри свои же умные объяснения. не ори если не знаешь. Как у меня написано работать будет. Почему - домашнее задание на сообразительность. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2008, 14:32 |
|
||
|
LINQ-Вопрос господину Гу и господину Зы: "Что делать если всё плохо?"
|
|||
|---|---|---|---|
|
#18+
Bill Great зы 1) создал бы статический список предикатов: ключ в колонке - предикат 2) написал бы итератор Код: plaintext Hah! Но так НЕ РАБОТАЕТ!!!!! Нельзя писать внeтри foreach!!!! Смотри свои же умные объяснения. Я создал максимально короткий НЕРАБОТАЮЩИЙ пример, каждый может проверить! См. новый тему! зная что ничерта ты не найдешь и не напишешь, решил сам потренироваться на практике. Вот тебе ниже работающий пример для примерно твоего контекста. Наверняка можно и лучше написать, но основная идея должна быть понятна Код: plaintext на linq форумах как-то вроде иначе предлагали сделать, сейчас не нашел ссылку. Но это тоже работает нормально :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2008, 16:02 |
|
||
|
LINQ-Вопрос господину Гу и господину Зы: "Что делать если всё плохо?"
|
|||
|---|---|---|---|
|
#18+
зына linq форумах... господа, может вы туда и пойдете строем ставить опыты на себе?.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2008, 16:05 |
|
||
|
LINQ-Вопрос господину Гу и господину Зы: "Что делать если всё плохо?"
|
|||
|---|---|---|---|
|
#18+
господин Гу зына linq форумах... господа, может вы туда и пойдете строем ставить опыты на себе?.. твой мозг не выдерживает синтаксис? :) не читай ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2008, 16:27 |
|
||
|
LINQ-Вопрос господину Гу и господину Зы: "Что делать если всё плохо?"
|
|||
|---|---|---|---|
|
#18+
зы зная что ничерта ты не найдешь и не напишешь, решил сам потренироваться на практике. Вот тебе ниже работающий пример для примерно твоего контекста. Наверняка можно и лучше написать, но основная идея должна быть понятна Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. Идею понял, ты имярек, забыл про активность. Чуть позже попробую! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2008, 16:31 |
|
||
|
LINQ-Вопрос господину Гу и господину Зы: "Что делать если всё плохо?"
|
|||
|---|---|---|---|
|
#18+
Bill Great ты имярек, забыл про активность а теперь по-русски, слабо? причем тут активность? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2008, 16:35 |
|
||
|
LINQ-Вопрос господину Гу и господину Зы: "Что делать если всё плохо?"
|
|||
|---|---|---|---|
|
#18+
зытвой мозг не выдерживает синтаксис? :) не читай прикупите себе вменяемого архитектора и лет через 5 он разрешит вам потрогать это руками. если оно выживет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2008, 17:50 |
|
||
|
LINQ-Вопрос господину Гу и господину Зы: "Что делать если всё плохо?"
|
|||
|---|---|---|---|
|
#18+
зы Bill Great ты имярек, забыл про активность а теперь по-русски, слабо? причем тут активность? Твой вопрос говорит о том что я не на того подумал. Отбор может быть активен или нет в зависимости от этого он участвует в выражении или нет. идея красивая. То что я вкладывал были примеры а не рабочий код. Конечно словарик это слишком примитивно. Сейчас применю на практике. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2008, 17:52 |
|
||
|
LINQ-Вопрос господину Гу и господину Зы: "Что делать если всё плохо?"
|
|||
|---|---|---|---|
|
#18+
господин Гу прикупите себе вменяемого архитектора и лет через 5 он разрешит вам потрогать это руками. если оно выживет. ну mashup покритиковать всегда приветствуется, только желательно конечно конкретно :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2008, 17:58 |
|
||
|
LINQ-Вопрос господину Гу и господину Зы: "Что делать если всё плохо?"
|
|||
|---|---|---|---|
|
#18+
... сказала лабораторная мышь субж вышел 3 месяца назад. какая критика, его еще просто НЕТ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2008, 19:32 |
|
||
|
LINQ-Вопрос господину Гу и господину Зы: "Что делать если всё плохо?"
|
|||
|---|---|---|---|
|
#18+
откуда только берутся такие любители пукнуть в воздух? ааа, понял, тебе твой архитектор только-только дал потрогать .net 1.1, вот ты и рад до безумия :) ну что ж, осваивай, береги ручки для новых ископаемых :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2008, 22:54 |
|
||
|
|

start [/forum/topic.php?fid=17&msg=35130957&tid=1352409]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
158ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
67ms |
get tp. blocked users: |
2ms |
| others: | 228ms |
| total: | 497ms |

| 0 / 0 |
