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 в коде, специфичном для модели. Я вполне уверен, что это сработает, просто хочу убедиться, что я не пропускаю какой-то очевидный более простой метод, который позволит достичь того же результата за долю времени.
Спасибо.