Здравствуйте.
Скажите пожалуйста, ни у кого не было такого, что при енумерации 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>>
Здравствуйте, 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>>
Я убрал все преобразования ключа к ToLower() в MapDescriptor и двоится после загрузки списков объектов из базы имена свойств в _allMembers перестали

При этом список объектов загружается — на первый взгляд работоспособность RSDN Framework Data не утратил.
Скажите пожалуйста — преобразование к нижнему регистру имени свойства/поля зачем было введено? C# ведь регистро зависимый язык.
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Здравствуйте, oleksab, Вы писали:
O> Скажите пожалуйста — преобразование к нижнему регистру имени свойства/поля зачем было введено? C# ведь регистро зависимый язык.
C# язык регистро-зависимый, но DataSources не регистро-зависимые совсем. Как быть в данном случае даже не знаю. AllMembers — это по сути заплатка для DataBinding. В новой версии все эти проблемы учтены и подобным грязным хакам не будет места

... << RSDN@Home 1.2.0 alpha rev. 0>>
Здравствуйте, IT, Вы писали:
IT> В новой версии все эти проблемы учтены и подобным грязным хакам не будет места
Скажи пожалуйста — когда будет следующая версия?
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Здравствуйте, oleksab, Вы писали:
IT>> В новой версии все эти проблемы учтены и подобным грязным хакам не будет места
O> Скажи пожалуйста — когда будет следующая версия?
Где-то через месяц.
... << RSDN@Home 1.2.0 alpha rev. 0>>