Добрый день!
Сообщение скорее к автору проекта - 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 - ошибка вернулась.
Перечитал сообщение, что-то скомкано написал, думаю по скринам таблиц будет понятнее.
Ошибка: меняю св-во базового класса в производном классе
Модератор: immortal
-
- Сообщения: 33
- Зарегистрирован: Вс мар 16, 2014 9:41 pm
- Откуда: Чебоксары
- Благодарил (а): 30 раз
- Поблагодарили: 0
Re: Ошибка: меняю св-во базового класса в производном классе
Сергей, Сергей, как слышно, прием, отзовитесь пожалуйста
- sergejey
- Site Admin
- Сообщения: 4284
- Зарегистрирован: Пн сен 05, 2011 6:48 pm
- Откуда: Минск, Беларусь
- Благодарил (а): 75 раз
- Поблагодарили: 1559 раз
- Контактная информация:
Re: Ошибка: меняю св-во базового класса в производном классе
Т.е. изменение срока хранения истории в родительском классе приводит к созданию новой записи в таблице properties?krasnov писал(а):Сергей, Сергей, как слышно, прием, отзовитесь пожалуйста
Видимо что-то с целостностью связей свойств в иерархии классов. Пометил, что надо разобраться.
Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
-
- Сообщения: 33
- Зарегистрирован: Вс мар 16, 2014 9:41 pm
- Откуда: Чебоксары
- Благодарил (а): 30 раз
- Поблагодарили: 0
Re: Ошибка: меняю св-во базового класса в производном классе
Нет, изменил срок в производном (THSensors) классе, т.к. не устраивал срок в родительском (tempSensors).sergejey писал(а):Т.е. изменение срока хранения истории в родительском классе приводит к созданию новой записи в таблице properties?
То, что создалась новая запись св-ва в таблице properties для производного класса на мой взгляд нормально, т.к. если не создавать, то изменяя в родительском классе получится что сменим для всех производных классов.
По моему ошибка где-то в изменении таблицы pvalues. Среди выделенных строк первая (ID=102) лишняя, вторая (ID=110) нормальная, только не хватает PROPERTY_NAME.
Повторюсь что не знаю всей стуктуры БД и тонкостей работы, так что могу ошибаться в выводах.
- sergejey
- Site Admin
- Сообщения: 4284
- Зарегистрирован: Пн сен 05, 2011 6:48 pm
- Откуда: Минск, Беларусь
- Благодарил (а): 75 раз
- Поблагодарили: 1559 раз
- Контактная информация:
Re: Ошибка: меняю св-во базового класса в производном классе
в производном классе THSensors было добавлено свойство с таким же именем как в tempSensors, но с другим сроком хранения?
тогда да, скорее ошибка в том, что неправильно определяется ID-шник родительского свойства -- я не тестировал как поведёт себя объект, у которого в родительских классах есть свойства с одинаковыми именами.
тогда да, скорее ошибка в том, что неправильно определяется ID-шник родительского свойства -- я не тестировал как поведёт себя объект, у которого в родительских классах есть свойства с одинаковыми именами.
Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
-
- Сообщения: 33
- Зарегистрирован: Вс мар 16, 2014 9:41 pm
- Откуда: Чебоксары
- Благодарил (а): 30 раз
- Поблагодарили: 0
Re: Ошибка: меняю св-во базового класса в производном классе
Приведу скриншоты. Я нажал на "Переписать" у св-ва temp. И во втором окне заменил срок.sergejey писал(а):в производном классе THSensors было добавлено свойство с таким же именем как в tempSensors, но с другим сроком хранения?
тогда да, скорее ошибка в том, что неправильно определяется ID-шник родительского свойства -- я не тестировал как поведёт себя объект, у которого в родительских классах есть свойства с одинаковыми именами.