現在、DWScript + SQLite の ORM マッピングを作成しています。通常のプロパティ (文字列や整数など) のマッピングを正常に実装しましたが、外部キーと多対多の関係を追加したいと考えています。このために、クラス A で外部キープロパティを宣言し、実行時にクラス B に関係マネージャーを追加して、関係をモデル化することを計画しました。ソースコードのクラス B に関係マネージャーを配置できることはわかっていますが、フレームワークで宣言されたユーザー モデルへの外部キーを持つモデルがアプリケーションにあると想像してください。新しいアプリケーションごとにフレームワークを変更するのは現実的ではありません。
私の質問: スクリプトの実行時に新しいプロパティ、フィールド、または関数をオブジェクト/クラスに追加するにはどうすればよいですか?
説明するためのコードを次に示します。
type TClassB = class;
type TRelationManager = class end; // a class which controls the access to the relation, only a stub
type
[XORM_ForeignKey('LinkB')] //attribute to indicate property "LinkB" as Foreign Key
TClassA = class(TBaseModel)
private
FLinkB : TClassB;
published
property LinkB : TClassB; //Foreign Key to TClassB
end;
TClassB = class(TBaseModel)
private
published
// This field should be added at runtime and not directly in the source code, as shown here.
RelationManager : TRelationManager;
end;