我使用组件,多对一关系等为我的域模型实现了一个类,到目前为止,它一直很好地工作。现在,我有一个尚未映射的字段,其类型是接口。类似于以下内容:
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,但是我不确定该怎么做,也不确定如何将租户对象传递给州。
先谢谢了。