|
Вот: ..%IsModified() = 1, но ни одно свойство не поменялось - как такое может быть???
|
|||
---|---|---|---|
#18+
Днями начались чудеса с историями изменений - пишу в них объекты, которые менялись, ага. И вот ..%IsModified() говорит, что объект изменялся, но сравнивая через GetStored() его свойства(в хранилище и на памяти), различий не обнаруживаю. Как такое может быть? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.06.2013, 08:04 |
|
Вот: ..%IsModified() = 1, но ни одно свойство не поменялось - как такое может быть???
|
|||
---|---|---|---|
#18+
Возможно, идет перезапись значения на самого же себя. Или запись другого значения и потом возврат на старое. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.06.2013, 08:09 |
|
Вот: ..%IsModified() = 1, но ни одно свойство не поменялось - как такое может быть???
|
|||
---|---|---|---|
#18+
Блок А.Н., Но это-ж в одном %Save() и вроде бы %IsModified() должен возвращать ноль в описанных Вами случаях? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.06.2013, 16:57 |
|
Вот: ..%IsModified() = 1, но ни одно свойство не поменялось - как такое может быть???
|
|||
---|---|---|---|
#18+
kolesovИ вот ..%IsModified() говорит, что объект изменялся, но сравнивая через GetStored() его свойства(в хранилище и на памяти), различий не обнаруживаю. Как такое может быть?Например, так:Class del.test Extends %Persistent { Property f1 As %String [ InitialExpression = "test" ]; ClassMethod Test() { do ..%KillExtent() &sql(insert into del.test default values) set p=..%OpenId(1) write p.f1," ",p.f1IsModified()," ",p.%IsModified(),! do p.f1SetModified(1) write p.f1," ",p.f1IsModified()," ",p.%IsModified(),! } }Результат: Код: plaintext 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.06.2013, 17:28 |
|
Вот: ..%IsModified() = 1, но ни одно свойство не поменялось - как такое может быть???
|
|||
---|---|---|---|
#18+
kolesovБлок А.Н., Но это-ж в одном %Save() и вроде бы %IsModified() должен возвращать ноль в описанных Вами случаях? Сейчас посмотрел классы, %IsModified относиться к %LIbrary.RegistededObject. У которого еще никакого хранения нет. Так что вряд ли оно связано с тем, что хранится. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.06.2013, 18:59 |
|
Вот: ..%IsModified() = 1, но ни одно свойство не поменялось - как такое может быть???
|
|||
---|---|---|---|
#18+
Блок А.Н., Спасибо, но как-то печально не иметь возможности быстро узнать, изменены ли хранимые данные - я в итоге вписал перебор свойств и их сравнение - поштучно. Но глаза-б мои на это не смотрели ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.06.2013, 04:25 |
|
Вот: ..%IsModified() = 1, но ни одно свойство не поменялось - как такое может быть???
|
|||
---|---|---|---|
#18+
kolesov, Не смотря на то что Cache' строковая СУБД, она все же различает строки и числа для модификации Т.е. допустим вы поднимаете объект класса User.My у которого есть св-во a As %Integer А дальше наблюдаем Код: python 1. 2. 3. 4. 5. 6. 7. 8.
Зачем вам нужно узнавать изменились ли хранимые данные? Какая логика на это завязана? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2013, 04:00 |
|
Вот: ..%IsModified() = 1, но ни одно свойство не поменялось - как такое может быть???
|
|||
---|---|---|---|
#18+
sigmov, Узнавать изменились ли хранимые данные нужно чтобы решить - писать или нет историю их изменений. Разница примерно в 200 000 "лишних" записей в сутки или даже больше - когда пишу "всамделишные" изменения, то их примерно 100 тысяч штук, а когда полагаясь на %IsModified() - то получается 300 тысяч и больше - это нерационально. В итоге перебираю все свойства и сверяю все их значения со значениями в GetStored() - если хоть что-то поменялось, пишу. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2013, 09:49 |
|
|
start [/forum/topic.php?fid=39&msg=38314801&tid=1557124]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
135ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
others: | 15ms |
total: | 242ms |
0 / 0 |