如何映射实现状态模式的类

时间:2018-07-09 22:09:51

标签: nhibernate fluent-nhibernate-mapping

我使用组件,多对一关系等为我的域模型实现了一个类,到目前为止,它一直很好地工作。现在,我有一个尚未映射的字段,其类型是接口。类似于以下内容:

public class Tenant {
    ...
    private IState _state;
    public Tenant() {
        _state = new NewState(this);
    }
    protected Tenant() { } // for NHibernate
    ...
}

public interface IState {
    Tenant Owner {get;}
    void Activate();
    void Lock();
    ...
}

public NewState : IState {
    private Tenant _tenant;
    public NewState(Tenant tenant) {
        _tenant = tenant;
    }
    ...
}

public ActiveState : IState {
    private Tenant _tenant;
    public Activestate(Tenant tenant) {
        _tenant = tenant;
    }
    ...
}

租户对象的状态应保持不变。租户类的行为可能会根据状态而有所不同。本质上,我遵循一个非常基本的状态模式。

如何将其映射到NHibernate?目前,我正在使用FluentNHibernate,但是我对如何实现这一点感到困惑。我的意思是,我可以使用枚举类型代替类,但是我被告知将来有可能添加新状态,因此,如果我不对状态进行硬编码,那将是最好的选择。

我一直在谷歌搜索,发现有一个方法DiscriminateSubClassesOnColumn,但是我不确定该怎么做,也不确定如何将租户对象传递给州。

先谢谢了。

0 个答案:

没有答案