Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Не обновляются объекты в подключениях / 25 сообщений из 25, страница 1 из 1
17.10.2007, 10:40
    #34873882
Грин
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не обновляются объекты в подключениях
При разработке базы данных возникла проблема.
Имеем два объектных подключения к базе Каши. В одном из подключений
изменяем свойства и связи некого объекта, сохраняем объект. Изменения объекта
в этом подключения видны, но они не видны в другом подключении.
Изменения видны если разорвать и снова установить подключение, чего не
наблюдается при использовании SQL-запросов.
Каким образом можно не разрывая подключения устранить эту проблему?
Проблема видна как в C# так и в C++.
...
Рейтинг: 0 / 0
18.10.2007, 02:40
    #34876744
Грин
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не обновляются объекты в подключениях
Если что не так спросил, извиняюсь, поправьте.
...
Рейтинг: 0 / 0
18.10.2007, 07:29
    #34876824
NoGot
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не обновляются объекты в подключениях
В С++ и С# с cache не работал, поэтому если поподробнее обьясните что и как вы делаете, может сможем помочь))) Лучше если код будет))
...
Рейтинг: 0 / 0
18.10.2007, 08:20
    #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
18.10.2007, 09:21
    #34876935
NoGot
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не обновляются объекты в подключениях
А во втором подключении до сохранения объект уже был открыт?
...
Рейтинг: 0 / 0
18.10.2007, 09:25
    #34876942
Грин
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не обновляются объекты в подключениях
Он открывался, но после прочтения свойств закрывается.
Судя по всему объект остается в памяти Cache.
...
Рейтинг: 0 / 0
18.10.2007, 09:44
    #34876967
CJIECAPb
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не обновляются объекты в подключениях
А если в другом подключении у объекта %Reload() выполнить?
...
Рейтинг: 0 / 0
18.10.2007, 09:45
    #34876969
Блок А.Н.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не обновляются объекты в подключениях
Ну сам по себе он нен обновится. Отрыть заново не разрывая соединение как-то можно?
...
Рейтинг: 0 / 0
18.10.2007, 09:52
    #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
18.10.2007, 10:00
    #34876997
Ptn
Ptn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не обновляются объекты в подключениях
Если new1.Close(true); трансилриуется в %Close - то оно не фига не закрывает (привет System OREF-у) - в Каше для это приходится убивать/занулять переменную.

Попробуйте помимо Close еще и убивать new1.
...
Рейтинг: 0 / 0
18.10.2007, 10:02
    #34877003
Ptn
Ptn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не обновляются объекты в подключениях
ну и ch конечно же
...
Рейтинг: 0 / 0
18.10.2007, 10:16
    #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
18.10.2007, 11:00
    #34877195
''
''
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не обновляются объекты в подключениях
Попробуйте так:

new1.Close();
new1=null;

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


Я не в курсе как у вас объект в С#/C++ унижтожается - скорее всего нужно делать так как посоветовали в посте выше
...
Рейтинг: 0 / 0
19.10.2007, 04:13
    #34879531
Грин
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не обновляются объекты в подключениях
Код: plaintext
1.
2.
new1.Close();
new1=null;
Эффект нулевой. С примером objbind ознакомился, только не смог его запустить. Сваливается на ошибке. В приемере, наверное, работает все, но их метод не подойдет. т.к. они используют один глобальный объект.
...
Рейтинг: 0 / 0
19.10.2007, 05:06
    #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
19.10.2007, 10:19
    #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
19.10.2007, 10:40
    #34880058
Грин
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не обновляются объекты в подключениях
авторприложите Ваши исходники
прилагаю. Одно подключение использует Reload(), другое нет.

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

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

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

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

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

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

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


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