0

抽象クラス Vehicle と、Car と ForkLift から派生する 2 つのクラスがあります。

public abstract class Vehicle
{
    public EngineBase Engine { get; set; } 
}

public class Car : Vehicle
{
    public GasEngine Engine { get; set; }
}

public class ForkLift : Vehicle
{
    public ElectricEngine Engine { get; set; }
}

およびエンジン クラス:

public abstract class EngineBase
{
}

public class GasEngine : EngineBase
{
}

public class ElectricEngine : EngineBase
{
}

エンジンは「クラス階層ごとのテーブル」でマッピングされます。Vehicles でも​​同じパターンを使いたいです。

Engine クラスをマップし、その Engine プロパティで派生させる方法は?

遅延読み込みでそれを行う方法は?

4

2 に答える 2

0

そのコードはコンパイルされないため、マップできる可能性は低くなります。

于 2010-06-09T21:10:36.213 に答える
0

Vehicle で保護されたフィールドを使用し、アクセス戦略でマップします。

public abstract class Vehicle
{
    protected Engine _engine;
}

Fluent NHibernate では、次のようにマッピングされます。

References(x => x.Engine, "EngineId").Access.CamelCaseField(Prefix.Underscore);

その後、Vehicle を拡張するクラスは、必要に応じてそれをキャストできます。

public class Car : Vehicle
{
    public GasEngine
    {
        get { return (GasEngine)_engine; }
        set { _engine = Value; }
    }
}
于 2010-06-10T14:22:34.720 に答える