0
我有RestorableEnvironment
和IBaselineEntity
对象之间的1对多的关系:一个给定的RestorableEnvironment
将有一个且只有一个IBaselineEntity
对象,但每个IBaselineEntity
对象可以依赖于0 -n RestorableEnvironment
对象。然而,IBaselineEntity
以两种方式之一实现:通过文件或通过数据库。我的类(一般),如:NHibernate的:坚持参考与多个Contrete类界面
public interface IBaselineEntity
{
BaselineImage BuildImage();
//Remainder of interface
}
public class BaselineFile : IBaseline
{
//implementation
}
public class BaselineDatabase : IBaseline
{
//implementation
}
public class RestorableEnvironment
{
public IBaselineEntity BaselineEntity { get; set; }
//Remainder of class
}
NHibernate的需要在引用语句中的具体落实IBaselineEntity
的。为了处理这一点,我已经更新到RestorableEnvironment
:
public class RestorableEnvironment
{
public IBaselineEntity BaselineEntity
{
get { return BaselineDatabase ?? BaselineFile; }
set
{
BaselineFile = value as BaselineFile;
BaselineDatabase = value as BaselineDatabase;
}
}
private BaselineFile _baselineFile;
public BaselineFile BaselineFile
{
get { return _baselineFile; }
protected set
{
_baselineFile = value;
if (value != null)
BaselineDatabase = null;
}
}
private BaselineDatabase _baselineDatabase;
public BaselineDatabase BaselineDatabase
{
get { return _baselineDatabase; }
protected set
{
_baselineDatabase= value;
if (value != null)
BaselineFile = null;
}
}
// Remainder of class
}
现在,我有具体的课程,我现在可以映射在NHibernate的,但这种感觉就像一个黑客攻击。有什么改进建议吗?
完美!对于Meta Mappings更多一点,我还看到:http://stackoverflow.com/questions/8989279/mapping-to-multiple-tables-with-fluent-nhibernate – 2012-04-12 21:28:45