powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / ADOMD.NET: Level.MemberCount и Member.ChildCount - тип данных
9 сообщений из 9, страница 1 из 1
ADOMD.NET: Level.MemberCount и Member.ChildCount - тип данных
    #33501125
Ihor Bobak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В ADOMD.NET 8.0/9.0 заметил странную картину: для класса Member имеем вот такое:

public long get_ChildCount()
{
if (this.baseData.AxisData == null)
{
DataRow row1 = (DataRow) this.baseData.MetadataData;
return (long) Convert.ToInt32(AdomdUtils.GetProperty(row1, Member.childCountColumn), CultureInfo.InvariantCulture);
}
DataRow row2 = (DataRow) this.baseData.AxisData;
if (!row2.Table.Columns.Contains("DisplayInfo"))
{
throw new NotSupportedException(SR.Member_MissingDisplayInfo);
}
return (long) (Convert.ToInt32(AdomdUtils.GetProperty(row2, "DisplayInfo"), CultureInfo.InvariantCulture) & 0xffff); }


Аналогичная конвертация в long делается в Level.MemberCount.

Смотрим теперь на схему XMLA запроса MDSCHEMA_MEMBERS:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
<Discover xmlns="urn:schemas-microsoft-com:xml-analysis">
  <RequestType>MDSCHEMA_MEMBERS</RequestType>
  <Restrictions>
    <RestrictionList>
     ......
    </RestrictionList>
  </Restrictions>
  <Properties>
    <PropertyList>
      .....
      <Content>SchemaData</Content>
      ..... 
    </PropertyList>
  </Properties>
</Discover>

и видим:

<xsd:element sql:field="CHILDREN_CARDINALITY" name="CHILDREN_CARDINALITY" type= "xsd:unsignedInt" minOccurs="0" />

То есть, с сервера идет unsigned int 32-bit, потом в коде ADOMD.NET конвертируется в signed int 32 bit, а затем в long. Это просто неточность, или сделано с какой то целью?
...
Рейтинг: 0 / 0
ADOMD.NET: Level.MemberCount и Member.ChildCount - тип данных
    #33509222
Ирина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ihor BobakТо есть, с сервера идет unsigned int 32-bit, потом в коде ADOMD.NET конвертируется в signed int 32 bit, а затем в long. Это просто неточность, или сделано с какой то целью?
И то и другое. Сначала расскажу почему вообще разные типы передаются. Это пресловутая backward compatibility(совместимость с предидущей версией). Дело в том, что OLEDB всегда возвращало uint, в результате чего XML/A, который моделировался по OLEDB, тоже возвращает uint. ADOMD(то, что без .Net) возвращало long. Сначала мы хотели это сломать(какая разница если продукт другой), но злое начальство топнуло ногой и сказало, что заказчики не хотят менять код(кстати а вы хотите менять код?), пришлось делать как было в старом ADOMD(кстати, знаете почему так не uint был?потому что VB unsigned не поддерживает). В общем получилось не очень красиво, зато совместимо.
Но то, что два раза конвертится - это конечно ошибка(к счастью не опасная), дело в том, что (long) это уже компилятор прописал, а у нас в коде используется implicit conversion C шарпа.
Ирина
<BR>
<BR>----------------------------------------------------
<BR>This posting is provided "AS IS" with no warranties, and confers no rights
...
Рейтинг: 0 / 0
ADOMD.NET: Level.MemberCount и Member.ChildCount - тип данных
    #33509297
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИринаСначала мы хотели это сломать(какая разница если продукт другой), но злое начальство топнуло ногой и сказало, что заказчики не хотят менять код(кстати а вы хотите менять код?)

Да, я хочу и уже поменял свой код, ибо если ослов сменили на арабских скакунов, надо и седло менять и сбрую.
...
Рейтинг: 0 / 0
ADOMD.NET: Level.MemberCount и Member.ChildCount - тип данных
    #33509719
Mosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Иринано злое начальство топнуло ногой и сказало, что заказчики не хотят менять код
Спасибо тебе Ира на добром слове :)

Моша
----------------------------------------------------
This posting is provided "AS IS" with no warranties, and confers no rights
...
Рейтинг: 0 / 0
ADOMD.NET: Level.MemberCount и Member.ChildCount - тип данных
    #33509744
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mosha Иринано злое начальство топнуло ногой и сказало, что заказчики не хотят менять код
Спасибо тебе Ира на добром слове :)

Моша
----------------------------------------------------
This posting is provided "AS IS" with no warranties, and confers no rights

Смею предположить, что если вы перед Ириной топнули, то перед этим вам кто то свыше кулаком по столу ударил.
...
Рейтинг: 0 / 0
ADOMD.NET: Level.MemberCount и Member.ChildCount - тип данных
    #33520441
Ihor Bobak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иринакстати а вы хотите менять код?

Ирина, спасибо за ответ.

Мы до этого не работали с ADOMD (без .NET), но я бы все-таки поменял код если бы мы делали переход с ADOMD на ADOMD.NET.
...
Рейтинг: 0 / 0
ADOMD.NET: Level.MemberCount и Member.ChildCount - тип данных
    #33520501
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ihor Bobak Иринакстати а вы хотите менять код?

Ирина, спасибо за ответ.

Мы до этого не работали с ADOMD (без .NET), но я бы все-таки поменял код если бы мы делали переход с ADOMD на ADOMD.NET.

Моша, вот видите, не только я один хочу (уже переписал) код.

Спрашивается, кому нужна совместимость с ADOMD? VB-script-оидам?

Тем более ADOMD9 в COM ипостаси существует только виртуально (за него под COM прикидивается ADOMD.NET - не завидую тем C#-щикам, которые это писали).

Кстати, как не счет xcopy deployment ADOMD.NET 9? Если будем ходить только к AS2K5 серверу, и за локальные кубы браться не будем, то Microsoft.AnalysisServices.AdomdClient.dll это чистая .Net2 Assembly без пагубных наклонностей вызавать что либо кроме dll-лек операцинки? (если ILDASM меня не подвел)
...
Рейтинг: 0 / 0
ADOMD.NET: Level.MemberCount и Member.ChildCount - тип данных
    #33520563
Ihor Bobak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
backfireКстати, как не счет xcopy deployment ADOMD.NET 9? Если будем ходить только к AS2K5 серверу, и за локальные кубы браться не будем, то Microsoft.AnalysisServices.AdomdClient.dll это чистая .Net2 Assembly без пагубных наклонностей вызавать что либо кроме dll-лек операцинки? (если ILDASM меня не подвел)

У меня работает.
...
Рейтинг: 0 / 0
ADOMD.NET: Level.MemberCount и Member.ChildCount - тип данных
    #33523495
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ihor Bobak backfireКстати, как не счет xcopy deployment ADOMD.NET 9? Если будем ходить только к AS2K5 серверу, и за локальные кубы браться не будем, то Microsoft.AnalysisServices.AdomdClient.dll это чистая .Net2 Assembly без пагубных наклонностей вызавать что либо кроме dll-лек операцинки? (если ILDASM меня не подвел)

У меня работает.

Игорь, Вы же сами в другой ветке настаивали на том, чтобы на вопрос отвечал тот, кому он аресован, а не я. :-)
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / ADOMD.NET: Level.MemberCount и Member.ChildCount - тип данных
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]