powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Не обновляются объекты в подключениях
25 сообщений из 25, страница 1 из 1
Не обновляются объекты в подключениях
    #34873882
Грин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
При разработке базы данных возникла проблема.
Имеем два объектных подключения к базе Каши. В одном из подключений
изменяем свойства и связи некого объекта, сохраняем объект. Изменения объекта
в этом подключения видны, но они не видны в другом подключении.
Изменения видны если разорвать и снова установить подключение, чего не
наблюдается при использовании SQL-запросов.
Каким образом можно не разрывая подключения устранить эту проблему?
Проблема видна как в C# так и в C++.
...
Рейтинг: 0 / 0
Не обновляются объекты в подключениях
    #34876744
Грин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если что не так спросил, извиняюсь, поправьте.
...
Рейтинг: 0 / 0
Не обновляются объекты в подключениях
    #34876824
NoGot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В С++ и С# с cache не работал, поэтому если поподробнее обьясните что и как вы делаете, может сможем помочь))) Лучше если код будет))
...
Рейтинг: 0 / 0
Не обновляются объекты в подключениях
    #34876866
Грин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
один класс
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Class EXE.New Extends %Persistent
{

Property Property1 As %String;

Relationship Children As EXE.NewChild [ Cardinality = many, Inverse = Parent ];

Method AddChild(childParam As %String)
{
	set child=##Class(EXE.NewChild).%New()
	if ($L(childParam)) set child.ChildProperty1=childParam
	do ..Children.Insert(child)
	do child.%Save()
}

}
и второй
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Class EXE.NewChild Extends %Persistent
{

Relationship Parent As EXE.New [ Cardinality = one, Inverse = Children ];

Property ChildProperty1 As %String [ InitialExpression = "child" ];

}

имеет два подключения к БД. В одном создаем новый экземпляр класса New. Через SQL он виден в обоих подключениях. Далее открываем этот объект в первом подключении и добавляем елемент через AddChild. Изменения видны. В другом подключении нет.
...
Рейтинг: 0 / 0
Не обновляются объекты в подключениях
    #34876935
NoGot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А во втором подключении до сохранения объект уже был открыт?
...
Рейтинг: 0 / 0
Не обновляются объекты в подключениях
    #34876942
Грин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Он открывался, но после прочтения свойств закрывается.
Судя по всему объект остается в памяти Cache.
...
Рейтинг: 0 / 0
Не обновляются объекты в подключениях
    #34876967
CJIECAPb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А если в другом подключении у объекта %Reload() выполнить?
...
Рейтинг: 0 / 0
Не обновляются объекты в подключениях
    #34876969
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну сам по себе он нен обновится. Отрыть заново не разрывая соединение как-то можно?
...
Рейтинг: 0 / 0
Не обновляются объекты в подключениях
    #34876983
Грин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
EXE.New new1 = EXE.New.OpenId(connection1, ID);
foreach (EXE.NewChild ch in new1.Children)
{
	tbox_Property1.Text += ch.ChildProperty1+"\r\n";
        ch.Close(true);
 }
 new1.Close(true);
Объект открывается всегда как новый и закрывается. Но при закрытии он остается в памяти Cache.

У подключения есть метод connection1.CloseAllObjects(). С ним вроде сразу обновляет. А если я при этом буду с другими объектами Cache работать, то этот метод мне все карты перепутает.
...
Рейтинг: 0 / 0
Не обновляются объекты в подключениях
    #34876997
Ptn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если new1.Close(true); трансилриуется в %Close - то оно не фига не закрывает (привет System OREF-у) - в Каше для это приходится убивать/занулять переменную.

Попробуйте помимо Close еще и убивать new1.
...
Рейтинг: 0 / 0
Не обновляются объекты в подключениях
    #34877003
Ptn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну и ch конечно же
...
Рейтинг: 0 / 0
Не обновляются объекты в подключениях
    #34877028
Грин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PtnПопробуйте помимо Close еще и убивать new1.
Если ты про new1.Dispose(), то дохлый номер.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
EXE.New new1 = EXE.New.OpenId(connection1, ID);
new1.Reload();
foreach (EXE.NewChild ch in new1.Children)
{
	tbox_Property1.Text += ch.ChildProperty1+"\r\n";
        ch.Close();
 }
 new1.Close();
Так срабатывает сразу, но только процедуру надо дважды вызывать
...
Рейтинг: 0 / 0
Не обновляются объекты в подключениях
    #34877195
''
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
''
Гость
Попробуйте так:

new1.Close();
new1=null;

Посмотрите еще примеры работы из С#:
%CACHEINSTALL%\Dev\dotnet\samples\objbind\
...
Рейтинг: 0 / 0
Не обновляются объекты в подключениях
    #34877589
Ptn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ГринЕсли ты про new1.Dispose(), то дохлый номер.


Я не в курсе как у вас объект в С#/C++ унижтожается - скорее всего нужно делать так как посоветовали в посте выше
...
Рейтинг: 0 / 0
Не обновляются объекты в подключениях
    #34879531
Грин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
new1.Close();
new1=null;
Эффект нулевой. С примером objbind ознакомился, только не смог его запустить. Сваливается на ошибке. В приемере, наверное, работает все, но их метод не подойдет. т.к. они используют один глобальный объект.
...
Рейтинг: 0 / 0
Не обновляются объекты в подключениях
    #34879537
Грин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот так наверное наиболее дешевый способ:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
EXE.New new1 = EXE.New.OpenId(connection1, ID);
new1.Reload();
foreach (EXE.NewChild ch in new1.Children)
{
	tbox_Property1.Text += ch.ChildProperty1+"\r\n";
        ch.Close();
 }
new1.Reload();
new1.Close();
...
Рейтинг: 0 / 0
Не обновляются объекты в подключениях
    #34879977
''
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
''
Гость
авторTo Грин
Повторил Вашу проблему. У меня все отлично работает. Если можно, приложите Ваши исходники.
Кстати на какой версии пробовали? Я на 2007.1.0.369.0.
Вопрос: а зачем в цикле ch.Close() ?

К вопросу про Dispose(). Цитата из документации:
авторThe Close() method disconnects a proxy object from the database without destroying it. The Dispose() method destroys the proxy object.
...
Рейтинг: 0 / 0
Не обновляются объекты в подключениях
    #34880058
Грин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторприложите Ваши исходники
прилагаю. Одно подключение использует Reload(), другое нет.

авторК вопросу про Dispose()
Все это очень замечательно, как бы в этом убедиться...

используется Cache 5.2

ch.Close() - это уже эксперименты, и не только это было.
...
Рейтинг: 0 / 0
Не обновляются объекты в подключениях
    #34880591
''
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
''
Гость
авторTo Грин
Попробовал Ваш пример. Работает нормально. Изменения из первого соединения видны во втором.
Удаление у Вас работает? У меня - нет. И не должно.

Попробуйте использовать библиотеку от новой версии.

PS: я в Вашем коде некоторый рафакторинг сделал. Файл приложен.
...
Рейтинг: 0 / 0
Не обновляются объекты в подключениях
    #34881214
Грин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Удаление работает только для пустых объектов New. Если есть связанные объеты удаление не проходит по понятным причинам. Просто удаление делалось когда не было связанного класса, после не переделал.
Во втором у меня обновления работают, либо после переподключения соединения, либо если сильно быстро выбирать разные объекты. Видимо, срабатывает какое-то очищение кэша...
Какую библиотеку вы имеете в виду и где ее можно взять?
...
Рейтинг: 0 / 0
Не обновляются объекты в подключениях
    #34881372
''
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
''
Гость
InterSystems.Data.CacheClient.dll (входит в поставку Cache 2007.1)

Взять можно на сайте InterSystems или у Вашего консультанта.
...
Рейтинг: 0 / 0
Не обновляются объекты в подключениях
    #34883634
Грин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Обновление компоненты не помогло. Может быть дело в версии Cahe.
...
Рейтинг: 0 / 0
Не обновляются объекты в подключениях
    #34883639
Грин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторInterSystems.Data.CacheClient.dll (входит в поставку Cache 2007.1)

Взять можно на сайте InterSystems или у Вашего консультанта.
Может кинете свою Dll-ку?
...
Рейтинг: 0 / 0
Не обновляются объекты в подключениях
    #34883787
''
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
''
Гость
Если Вы скачали библиотеку по адресу http://www.intersystems.ru/cache/dotnet/index.html
и все равно не работает, значит, дело в версии Cache. У меня с этой библиотекой Ваш пример работает нормально.
...
Рейтинг: 0 / 0
Не обновляются объекты в подключениях
    #34883830
Грин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Эта библиотека еще старее, моей. Она для 5.1 сделана была.
Эффект нулевой. Видать, полюбому, дело в версии Cache...
...
Рейтинг: 0 / 0
25 сообщений из 25, страница 1 из 1
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Не обновляются объекты в подключениях
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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