Ошибка: меняю св-во базового класса в производном классе

Всё, что не подходит под вышеперечисленные разделы

Модератор: immortal

Ответить
krasnov
Сообщения: 33
Зарегистрирован: Вс мар 16, 2014 9:41 pm
Откуда: Чебоксары
Благодарил (а): 30 раз
Поблагодарили: 0

Ошибка: меняю св-во базового класса в производном классе

Сообщение krasnov » Ср апр 02, 2014 2:37 pm

Добрый день!

Сообщение скорее к автору проекта - sergejey, но и другим будет полезно, вдруг у кого такое же поведение наблюдается.
Пока не до конца вник в проблему, чтобы самому поправить, да и не знаю, возможно ли простому с улицы править в гитхабе. :)
Опишу на словах и картинках.
На основе базового класса tempSensors создал новый класс THSensors с новым св-вом humidity.
Все работало: в меню отображалась температура, в графиках - график температуры.
В процессе разных правок перестало обновляться значение температуры в меню, хотя в графике меняется.
В меню прописано стандартно объект.св-во: firstTHSensor.temp (где temp св-во класса tempSensors).
Залез в базу и обнаружил такую вещь, оказалось я уменьшил в классе THSensors у св-ва temp кол-во дней для хранения истории с базовых 7 до 2.
В таблице properties добавилась новая запись с новым св-вом temp производного класса THSensors.
В таблице pvalues так же добавилась запись, но без значения в поле property_name. Запись со ссылкой на св-во из базового класса не удалилась.
В итоге в phistory данные для новой записи без property_name, а в меню указано firstTHSensor.temp - так понимаю берется из старой записи со старым значением где в property_name указано это значение.
Удалил в THSensors св-во temp - все нормализовалось. Снова перебил с 7 на 2 - ошибка вернулась.
Перечитал сообщение, что-то скомкано написал, думаю по скринам таблиц будет понятнее.
db_classes.jpg
классы
db_classes.jpg (199.72 КБ) 7633 просмотра
db_base_class_prop.jpg
св-ва базового класса
db_base_class_prop.jpg (93.48 КБ) 7633 просмотра
db_class_prop.jpg
св-ва производного класса
db_class_prop.jpg (59.37 КБ) 7633 просмотра
db1.jpg
значения объекта
db1.jpg (137.45 КБ) 7633 просмотра
db2.jpg
история значений объекта
db2.jpg (115.46 КБ) 7633 просмотра
krasnov
Сообщения: 33
Зарегистрирован: Вс мар 16, 2014 9:41 pm
Откуда: Чебоксары
Благодарил (а): 30 раз
Поблагодарили: 0

Re: Ошибка: меняю св-во базового класса в производном классе

Сообщение krasnov » Пн апр 07, 2014 11:06 am

Сергей, Сергей, как слышно, прием, отзовитесь пожалуйста :)
Аватара пользователя
sergejey
Site Admin
Сообщения: 4284
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 75 раз
Поблагодарили: 1559 раз
Контактная информация:

Re: Ошибка: меняю св-во базового класса в производном классе

Сообщение sergejey » Пн апр 07, 2014 1:28 pm

krasnov писал(а):Сергей, Сергей, как слышно, прием, отзовитесь пожалуйста :)
Т.е. изменение срока хранения истории в родительском классе приводит к созданию новой записи в таблице properties?

Видимо что-то с целостностью связей свойств в иерархии классов. Пометил, что надо разобраться.

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
krasnov
Сообщения: 33
Зарегистрирован: Вс мар 16, 2014 9:41 pm
Откуда: Чебоксары
Благодарил (а): 30 раз
Поблагодарили: 0

Re: Ошибка: меняю св-во базового класса в производном классе

Сообщение krasnov » Пн апр 07, 2014 2:00 pm

sergejey писал(а):Т.е. изменение срока хранения истории в родительском классе приводит к созданию новой записи в таблице properties?
Нет, изменил срок в производном (THSensors) классе, т.к. не устраивал срок в родительском (tempSensors).
То, что создалась новая запись св-ва в таблице properties для производного класса на мой взгляд нормально, т.к. если не создавать, то изменяя в родительском классе получится что сменим для всех производных классов.
По моему ошибка где-то в изменении таблицы pvalues. Среди выделенных строк первая (ID=102) лишняя, вторая (ID=110) нормальная, только не хватает PROPERTY_NAME.
Повторюсь что не знаю всей стуктуры БД и тонкостей работы, так что могу ошибаться в выводах.
Аватара пользователя
sergejey
Site Admin
Сообщения: 4284
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 75 раз
Поблагодарили: 1559 раз
Контактная информация:

Re: Ошибка: меняю св-во базового класса в производном классе

Сообщение sergejey » Пн апр 07, 2014 2:59 pm

в производном классе THSensors было добавлено свойство с таким же именем как в tempSensors, но с другим сроком хранения?
тогда да, скорее ошибка в том, что неправильно определяется ID-шник родительского свойства -- я не тестировал как поведёт себя объект, у которого в родительских классах есть свойства с одинаковыми именами.

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
krasnov
Сообщения: 33
Зарегистрирован: Вс мар 16, 2014 9:41 pm
Откуда: Чебоксары
Благодарил (а): 30 раз
Поблагодарили: 0

Re: Ошибка: меняю св-во базового класса в производном классе

Сообщение krasnov » Пн апр 07, 2014 3:33 pm

sergejey писал(а):в производном классе THSensors было добавлено свойство с таким же именем как в tempSensors, но с другим сроком хранения?
тогда да, скорее ошибка в том, что неправильно определяется ID-шник родительского свойства -- я не тестировал как поведёт себя объект, у которого в родительских классах есть свойства с одинаковыми именами.
Приведу скриншоты. Я нажал на "Переписать" у св-ва temp. И во втором окне заменил срок.
interface1.jpg
interface1.jpg (44 КБ) 7535 просмотров
interface2.jpg
interface2.jpg (38.56 КБ) 7535 просмотров
dopos
Сообщения: 1
Зарегистрирован: Ср апр 16, 2014 7:11 am
Благодарил (а): 0
Поблагодарили: 0

Re: Ошибка: меняю св-во базового класса в производном классе

Сообщение dopos » Вт апр 29, 2014 3:17 pm

спасибо за ответы

_______________
Кукурузные палочки я люблю больше, чем всякие сухарики и чипсы.
Ответить