powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Данные не сохраняются
10 сообщений из 35, страница 2 из 2
Данные не сохраняются
    #38493325
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.,

хм, уже вижу, что вы правы, но еще не могу понять, почему так работет.
...
Рейтинг: 0 / 0
Данные не сохраняются
    #38493326
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
(это я D_De1mos писал)
...
Рейтинг: 0 / 0
Данные не сохраняются
    #38493352
D_De1mos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.хм, уже вижу, что вы правы, но еще не могу понять, почему так работет.
Так работает потому что промежуточный объект хранит связь между объектами. А т.к. Б мы удалили, то %Id у него пустой. И при сохранении А проверяются все связанные объекты на их наличие в базе и модификацию. Таким образом, увидев через промежуточный объект, что есть несохраненный объект Б, мы пытаемся его успешно сохранить.
В общем Relationship выполняет свою задачу. Но при этом требует слишком пристального к себе внимания.
...
Рейтинг: 0 / 0
Данные не сохраняются
    #38493395
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
D_De1mosВ общем Relationship выполняет свою задачу. Но при этом требует слишком пристального к себе внимания.
Он для этого и предназначен.
Если кому не нравятся его "правила" это уже его личное дело... Но сам механизм Relationship винить в своих неумениях или не правильном его использовании таки не стоит.

А то так и до мистики не далеко...
...
Рейтинг: 0 / 0
Данные не сохраняются
    #38493468
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Предназначен для чего? Восстанавливать удаленные объекты?
...
Рейтинг: 0 / 0
Данные не сохраняются
    #38493619
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.Предназначен для чего?
Например для контроля удаления... Для синтаксиса -> или точку, при объектном доступе. Для явного показа связей...
А что еще от него ждете? Волшебства?

А все эти байки про оптимизатор... Так было время и BETWEEN c IN-ном не работали в Кащее. А потом это исправили... Оптимизатор сегодня такой, а завтра другой... А структыры данных живут гораздо дольше.
...
Рейтинг: 0 / 0
Данные не сохраняются
    #38493622
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
D_De1mosНапример есть класс А, который связан с классом Б так, что объект А может иметь много объектов Б.
Теперь чтобы удалить объект Б недостаточно просто сделать %DeleteId, необходимо так же удалить его из коллекции в объекте А, ибо если после этого сохраненить А, то объект восстановится.
Вот это на примере классов покажи...
Что это за связь такая, с коллекциями всякими...
...
Рейтинг: 0 / 0
Данные не сохраняются
    #38493684
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsaБлок А.Н.Предназначен для чего?
Например для контроля удаления... Для синтаксиса -> или точку, при объектном доступе. Для явного показа связей...
А что еще от него ждете? Волшебства?

А все эти байки про оптимизатор... Так было время и BETWEEN c IN-ном не работали в Кащее. А потом это исправили... Оптимизатор сегодня такой, а завтра другой... А структыры данных живут гораздо дольше.у ТС версия Cache 5.0 так что там наверно с оптимизацией пока еще не все гладко.
...
Рейтинг: 0 / 0
Данные не сохраняются
    #38494074
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DAiMorсмысл в том что были проблемы с оптимизатором SQL запросов по таким таблицам, что часто при выполнении запроса происходят неоптимальные переборы.Можно примеры оптимальных/неоптимальных запросов для свойств с/без Relationship? Если это касается лишь версии 5.0, может имеет смысл это как-то выделить? D_De1mosНапример есть класс А, который связан с классом Б так, что объект А может иметь много объектов Б. Теперь чтобы удалить объект Б недостаточно просто сделать %DeleteId, необходимо так же удалить его из коллекции в объекте А, ибо если после этого сохраненить А, то объект восстановится. Особенно актуально, когда клиент, при удалении, понятния не имеет о том, что работает с RelationsShip. Есть и другие проблемы с этим, например нельзя никогда забывать про %UnswizzleAt.Блок А.Н.Блок А.Н., хм, уже вижу, что вы правы, но еще не могу понять, почему так работет.Уже приводилось: 14524475 .
ПримерClass demo.b Extends %Persistent { Index aIndex On a; Property s As %String; Relationship a As demo.a [ Cardinality = one, Inverse = aList ]; } Class demo.a Extends %Persistent { Property s As %String; Relationship aList As demo.b [ Cardinality = many, Inverse = a ]; ClassMethod Fill() {   d ..%KillExtent()   d ##class(demo.b).%KillExtent()      s a=..%New()   s a.s="a"      s b2=##class(demo.b).%New()   s b2.s="b2"   s b2.a=a   s b1=##class(demo.b).%New()   s b1.s="b1"   s b1.a=a  
  •  d a.%Save()
  • } ClassMethod Test() {   d ..Fill()      s a=..%OpenId(1)   ;w a.aList.GetAt(2).s,!   ;d a.aList.%UnSwizzleAt(2)     
  •  d ##class(demo.b).%DeleteId(2)
  •  
  •  d a.%Save()
  • } }
    Код: plaintext
    USER>d ##class(demo.a).Fill()
    demo.a:IDs1ademo.b:IDas11b121b2
    • Тест №1: нет подгрузки в память s a=..%OpenId(1)
    •  d ##class(demo.b).%DeleteId(2)
    •  d a.%Save()
    • demo.a:IDs1ademo.b:IDas11b1 Тест №2: есть подгрузка в память s a=..%OpenId(1)   w a.aList.GetAt(2).s,!
    •  d ##class(demo.b).%DeleteId(2)
    •  d a.%Save()
    • demo.a:IDs1ademo.b:IDas11b1 3 1 b2 Тест №3: есть подгрузка в память и выгрузка из памяти  s a=..%OpenId(1)   w a.aList.GetAt(2).s,!   d a.aList.%UnSwizzleAt(2)
    •  d ##class(demo.b).%DeleteId(2)
    •  d a.%Save()
    • demo.a:IDs1ademo.b:IDas11b1
    Блок А.Н.Предназначен для чего? Восстанавливать удаленные объекты?Надеюсь, пример выше пояснит "чудесное" восстановление "удалённых" объектов и как этого избежать. PS: действительно, так недалеко и до суеверий и предубеждений . Пока же придерживаюсь точки зрения krvsa.
    ...
    Рейтинг: 0 / 0
    Данные не сохраняются
        #38494144
    Фотография krvsa
    Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
    Участник
    servitУже приводилось: 14524475.
    Я никогда не использовал такой способ/подход для работы со связанными екземплярами...
    Наверное из-за стойкой неприязни к простым переборам.
    ...
    Рейтинг: 0 / 0
    10 сообщений из 35, страница 2 из 2
    Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Данные не сохраняются
    Целевая тема:
    Создать новую тему:
    Автор:
    Закрыть
    Цитировать
    Найденые пользователи ...
    Разблокировать пользователей ...
    Читали форум (0):
    Пользователи онлайн (0):
    x
    x
    Закрыть


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