次のデータベーステーブルがあります。主キーはIDで、AnimalType.Typeは一意の文字列です。IDなしのユニークな値に基づいて2つのエンティティをリンクします。
Animal
- ID
- Name
- TypeID
AnimalType
- ID
- Type [Herbivore, Carnivore]
私のクラスは以下の通りです。
public class Animal
{
public int ID { get; private set; }
public string Name { get; set; }
public AnimalType Type { get; set; }
}
public class AnimalType
{
private int ID { get; set; }
public string Type { get; set; }
}
どのように私はそれが草食動物の同じAnimalTypeを参照するように、次のコードは、NHibernateはで動作するようになるだろうか?
var horse = new Animal() { Name = "Horse", Type = new AnimalType() { "Herbivore" }};
repository.SaveOrUpdate(horse);
var rabbit = new Animal() { Name = "Rabbit", Type = new AnimalType() { "Herbivore" } };
repository.SaveOrUpdate(rabbit);
UPDATE
私はNHibernateのは、このロジックを実行するために得ることができればいいです:http://andreas.scherbaum.la/blog/archives/11-Avoid-Unique-Key-violation.html
これは私がそれを行うことになると想定方法がある...
animalRepository.SaveOrUpdate(animal)
方法に上記のロジックを移動しますシナリオ。 – bleevoAnimalマッピング内のmany-to-oneタグでproperty-ref属性の使用方法を調べることができます。これにより、非FK列で別の表を参照することができます。データが変更されない場合は、列挙型を使用する方がはるかに優れています。 – Nigel