0

我有抽象类 Vehicle 和两个派生自:Car 和 ForkLift 的类。

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
{
}

引擎映射为“每个类层次结构的表”。对于车辆,我想使用相同的模式。

如何映射引擎类并使用该引擎属性派生?

如何通过延迟加载来做到这一点?

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 回答