Страница 1 из 1

Business Objects -> DataSet

Добавлено: 21 апр 2009, 10:32
nile.one
Здравствуйте.

Возникла проблема с производительностью дизайнера из-за сложной структуры бизнес-объектов.
Периодически возникает ошибка OutOfMemory (приложение занимает до 700 Мб RAM).
Изображение

Лицензия8/Дело - это коллекция, поэтому она не раскрывается как дочернее свойство объекта Лицензия8. С этим все понятно.
Но есть множество других свойств, например СтатусЛицензии, которые отображаются как в поддереве Лицензия8, так и отдельно, вместе со всеми дочерними свойствами.

Из-за такого механизма в источнике данных оказывается очень много таблиц. Нельзя ли выбирать, какие данные должны фигурировать в виде отдельных таблиц, а какие нет?

Например, в моем случае, кроме коллекций (Лицензия8/Дело) все остальные объекты достаточно отображать в поддереве Лицензии.

В просмотре "Словаря" есть возможность удалить неиспользуемые источники и можно удалить вручную ненужные источники. Есть ли программный способ выполнения этой операции?
Изображение

Business Objects -> DataSet

Добавлено: 21 апр 2009, 19:23
Jan
Здравствуйте,
Возникла проблема с производительностью дизайнера из-за сложной структуры бизнес-объектов.
Периодически возникает ошибка OutOfMemory (приложение занимает до 700 Мб RAM).
Изображение

Лицензия8/Дело - это коллекция, поэтому она не раскрывается как дочернее свойство объекта Лицензия8. С этим все понятно.
Но есть множество других свойств, например СтатусЛицензии, которые отображаются как в поддереве Лицензия8, так и отдельно, вместе со всеми дочерними свойствами.

Из-за такого механизма в источнике данных оказывается очень много таблиц. Нельзя ли выбирать, какие данные должны фигурировать в виде отдельных таблиц, а какие нет?
В свое время была система работы с бизнес-объектами напрямую, но потом от нее отказались из-за некоторых ограничений (не всегда можно сортировать, невсегда можно фильтровать, проблемы с мастер-детайл отчетами, связи и т.д.).
Например, в моем случае, кроме коллекций (Лицензия8/Дело) все остальные объекты достаточно отображать в поддереве Лицензии.
Можно использовать атрибут [Browsable(false)] для свойств, которые не нужно трогать.
В просмотре "Словаря" есть возможность удалить неиспользуемые источники и можно удалить вручную ненужные источники. Есть ли программный способ выполнения этой операции?
Изображение
Можно так:

report.Dictionary.DataSources.Remove(report.Dictionary.DataSources["Name"]);

Также потребуется отключить автосинхронизацию словаря данных:

Код: Выделить всё

StiOptions.Dictionary.AutoSynchronize = StiAutoSynchronizeMode.None;
Спасибо.


Business Objects -> DataSet

Добавлено: 22 апр 2009, 02:04
nile.one
Спасибо! С Dictionary разберусь.
Можно использовать атрибут для свойств, которые не нужно трогать.
Речь идет об атрибуте Browsable?



Business Objects -> DataSet

Добавлено: 22 апр 2009, 04:04
Jan
Здравствуйте,

Да именно. Извините взял этот атрибут в квадратные скобки и редактор форума посчитал это метотегом.

Спасибо.