Business Objects -> DataSet

Обсуждение Stimulsoft Reports.NET
Ответить
nile.one
Сообщения: 5
Зарегистрирован: 20 апр 2009, 10:54

Business Objects -> DataSet

Сообщение nile.one »

Здравствуйте.

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

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

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

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

В просмотре "Словаря" есть возможность удалить неиспользуемые источники и можно удалить вручную ненужные источники. Есть ли программный способ выполнения этой операции?
Изображение
Jan
Сообщения: 495
Зарегистрирован: 19 фев 2009, 11:14

Business Objects -> DataSet

Сообщение Jan »

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

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

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

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

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

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

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

nile.one
Сообщения: 5
Зарегистрирован: 20 апр 2009, 10:54

Business Objects -> DataSet

Сообщение nile.one »

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


Jan
Сообщения: 495
Зарегистрирован: 19 фев 2009, 11:14

Business Objects -> DataSet

Сообщение Jan »

Здравствуйте,

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

Спасибо.
Ответить