クラス定義でプロパティ名を変更すると、それまで参照できていたデータが参照できなくなる/参照時にエラーが発生するようになりました。

スタジオの編集部分でクラスのプロパティを変更した場合、内部的には

元のプロパティを削除 → 新しいプロパティを追加

という処理が行われます。(インスペクタではプロパティ名は変更できません)

このため、すでにデータを格納している永続クラスのプロパティ名を、上記のように変更した場合は、元のプロパティで設定されていた値にはアクセスができなくなります。(新しい格納位置が割り当てられます) 

また、変更したプロパティが必須(非ヌル)に指定されていた場合、データが存在しないために参照時にエラーが発生します。

基本的に、このような操作を行う場合は、あらかじめデータをエクスポートで保存し、データの削除・クラス定義の変更を行ってから、データを再インポートする方法が安全です。

または、スタジオのメニューの クラス→リファクタ→名前変更 を利用してプロパティ名を変更します。
(リファクタの名前変更メニューにより、クラス定義内のストレージやメソッド定義に対して、一括でプロパティ名を変更できます。)

 

リファクタメニューがない古いバージョンのスタジオでは、プロパティ名をスタジオで修正した後、手動でストレージ定義を変更します。

【方法】ストレージの定義で、新しいプロパティが元のプロパティと同じ格納位置をポイントするように手動で調整します。詳細は、以下の通りです。

スタジオのメニューで、[表示] > [ストレージの表示] を選択し編集領域にストレージ定義(XML形式)を表示し、Dataノード以下の Valueの値を以下のように変更します。

例) 現在の状態

OldName
...
NewName

※数値は任意の数がシステムで設定されています。OldNameが変更前のプロパティ名、NewNameが変更後のプロパティ名とします。

変更後

NewName
...

※変更前のプロパティ名を新しい名前で上書きします。新しく作成されていたノードは削除します


該当する製品: Caché, Ensemble, HealthShare/Caché Based, IRIS Data Platform, HealthShare/IRIS Based, IRIS for Health
関連トピック:
添付ファイル:

アンケートにご協力をお願いします
このトピックは参考になりましたか?
このトピックに関するお問い合わせ

FAQトップに戻る