двоятся элементы в MapDescriptor.AllMembers
От: oleksab Украина  
Дата: 29.12.05 10:50
Оценка:
Здравствуйте.

Скажите пожалуйста, ни у кого не было такого, что при енумерации foreach-м MapDescriptor.AllMembers для определенного типа эти самые члены там "задвоялись"?
То есть выводятся для типа Country два CountryID, два CountryCode и т.д. Я видел, что AllMembers — это Hashtable, но "маємо те, що маємо"
При чем это происходит после того, как список объектов этого типа был загружен с помощью DbManager-a.

К сожалению, на рабочем проекте это воспроизводится, на тестах рабочего проекта тоже воспроизводится, а на тестовом (чтобы можно было здесь показать) — нет. Воспроизводится так, что если закомментировать вызов db.GetSpCommand и вернуть пустой список, созданный с помощью new, то и при втором переборе AllMembers не задваиваются.

    MapDescriptor md = Map.Descriptor(typeof(Country));
    foreach (IMemberMapper mm in md.AllMembers)
    {
        // здесь все хорошо - сколько есть public property, столько их и выводится
        Console.WriteLine(mm.Name);
    }

    [...]
    
    using (DbManager db = new DbManager(_configurationCW))
    {
        al = db.SetSpCommand(new Program().GetSpName(typeof(Country), "SelAll"), null).ExecuteList<Country>();
    }

    [...]

    MapDescriptor md = Map.Descriptor(typeof(Country));
    foreach (IMemberMapper mm in md.AllMembers)
    {
        // здесь все плохо - public property выводятся по два раза
        Console.WriteLine(mm.Name);
    }


PS Новый год начнем первый раз праздновать сегодня вечером
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Re: двоятся элементы в MapDescriptor.AllMembers
От: oleksab Украина  
Дата: 29.12.05 11:34
Оценка:
Здравствуйте, oleksab, Вы писали:

Скажите пожалуйста, зачем в MapDescriptor.GetMember(string name) код

                 string lc = name.ToLower();

                if (lc != name)
                    _allMembers[lc] = obj;


lc != name как раз при ExecuteList, и, видимо, это и ведет к задваиванию названий свойств в MapDescriptor.
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Re[2]: двоятся элементы в MapDescriptor.AllMembers
От: oleksab Украина  
Дата: 29.12.05 12:15
Оценка:
Я убрал все преобразования ключа к ToLower() в MapDescriptor и двоится после загрузки списков объектов из базы имена свойств в _allMembers перестали При этом список объектов загружается — на первый взгляд работоспособность RSDN Framework Data не утратил.
Скажите пожалуйста — преобразование к нижнему регистру имени свойства/поля зачем было введено? C# ведь регистро зависимый язык.
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Re[3]: двоятся элементы в MapDescriptor.AllMembers
От: IT Россия linq2db.com
Дата: 30.12.05 04:39
Оценка:
Здравствуйте, oleksab, Вы писали:

O> Скажите пожалуйста — преобразование к нижнему регистру имени свойства/поля зачем было введено? C# ведь регистро зависимый язык.


C# язык регистро-зависимый, но DataSources не регистро-зависимые совсем. Как быть в данном случае даже не знаю. AllMembers — это по сути заплатка для DataBinding. В новой версии все эти проблемы учтены и подобным грязным хакам не будет места
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Re[4]: двоятся элементы в MapDescriptor.AllMembers
От: oleksab Украина  
Дата: 30.12.05 10:05
Оценка:
Здравствуйте, IT, Вы писали:

IT> В новой версии все эти проблемы учтены и подобным грязным хакам не будет места


Скажи пожалуйста — когда будет следующая версия?
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Re[5]: двоятся элементы в MapDescriptor.AllMembers
От: IT Россия linq2db.com
Дата: 30.12.05 12:52
Оценка:
Здравствуйте, oleksab, Вы писали:

IT>> В новой версии все эти проблемы учтены и подобным грязным хакам не будет места


O> Скажи пожалуйста — когда будет следующая версия?


Где-то через месяц.
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.