NHibernate 不需要太多的 POCO 修饰,但是不得不在我的域对象中放置代理键让我感觉有点不舒服。称我为过分热心——我更喜欢“意识形态一致”——但我的域对象肯定应该使用自然键,而不必求助于代理。
我不介意在我的数据库中使用代理,但我真的不想篡改我的工作域模型。我该如何规避这个问题?
我是否使用复合键对域类进行子类化,调整它们以便 NH 可以使用代理键,但我的域并不明智,只看到超类?
class DomainClass
{
private ParentClass1 _p1; // These two form a composite key
private ParentClass2 _p2; //
private int _i;
public int SomeProp
{
get { return _i; }
}
}
class NHDomainClass : DomainClass
{
private long _surrogateKey
private DomainClass _d;
public int SomeProp
{
get { return _d.SomeProp; }
}
}
在这个(仓促的、人为的)示例中,NH 看到 NHDomainClass 并且可以使用代理,但是因为它适应了 DomainClass,它仍然可以在特定于模型的代码中用作可行的 DomainClass。我相当确定这会起作用,只是想确保我不会错过一些明显更简单的方法,这些方法可以在很短的时间内实现相同的目标。
谢谢。