Составной ключ NHibernate против составного уникального ограничения

При использовании NHibernate, если у меня есть объект, который имеет уникальное ограничение и которое может быть однозначно идентифицировано этим ограничением, лучше ли представить ограничение как составной ключ или иметь отдельное поле Id и составное уникальное ограничение? Я читал, что использование составных ключей с NHibernate считается «плохим», если это может помочь, и его следует использовать только при работе с устаревшими базами данных.

Изобразите установку следующим образом:

class Book
{
   public virtual int Id { get; protected set; }
   public virtual string Author { get; set; }
   public virtual IList<BookEdition> Editions { get; set; } //HasMany (one to many)
}

class BookEdition
{
   public virtual string Title { get; set; }
   public virtual string Language { get; set; }
   public virtual int Edition { get; set; }
}

Здесь у нас есть ограничение для BookEdition, где оно имеет ограничение на язык и издание, то есть не может быть двух изданий книги на одном языке. Любое издание также можно однозначно идентифицировать по номеру издания и языку.

Какой подход считается лучшим в NHibernate? Использовать язык / издание в качестве составного Id или ввести переменную Id для BookEdition и вместо этого использовать составное уникальное ограничение?

9
задан Can Gencer 18 April 2011 в 05:05
поделиться