大丈夫ですので、1つのフィールドを除いてほぼ同じである必要がある2つのテーブルを作成する必要があります。NHibernate - ランタイム定義型のプロパティをマップします
私のモデルはおおよそ次のようになります。
class HouseGeometryModel
{
public virtual int Id { get; set; }
public virtual string Name { get; set; }
//More fields...
public virtual HouseAttributes Attributes { get; set; }
}
class DungeonGeometryModel
{
public virtual int Id { get; set; }
public virtual string Name { get; set; }
//More fields, all identical to HouseGeometryModel...
public virtual DungeonAttributes Attributes { get; set; }
}
class FortressGeometryModel
{
public virtual int Id { get; set; }
public virtual string Name { get; set; }
//More fields, all identical to HouseGeometryModel...
public virtual FortressAttributes Attributes { get; set; }
}
//More models...
をので、基本的には唯一のAttributes
プロパティは、ここではすべてのモデルの間で異なるので、私は、単一の(一般にすべてを統一する方法があるかもしれないと思いましたか? )クラス。
私はこれを実装するには2つの方法を考え出すことができます:
を作るようになり、一般的なクラス
GeometryModel<TAttributes>
:class GeometryModel<TAttributes> { public virtual int Id { get; set; } public virtual string Name { get; set; } //More fields... public virtual TAttributes Attributes { get; set; } }
これに伴う問題は、私が指定しなかったということです流暢なマッピング。マッピングはまた、(
ClassMap<GeometryModel<TAttributes>>
を実装するために)このように一般的になり、したがってNHibernateでインスタンス化することは不可能です。Attributes
プロパティをdynamic
にします。 NHibernateがClassMap<>
を作成するときobject
としてdynamic
プロパティを扱うので、どちらも機能しません。
この問題を解決する方法はありますか?