Fluent NHibernate を使用して単純な 1:n の関係をモデル化しようとしています:
人とアイテムがあります。1 人のアイテムが 1 人に属しているのに対し、1 人はゼロから無限のアイテムを持っています。
私のデータクラス:
public class Person
{
public virtual int Id { get; set; }
public virtual string Name { get; set; }
public virtual IList<Item> Items { get; set; }
}
public class Item
{
public virtual int Id { get; set; }
public virtual Person Owner { get; set; }
}
およびマッピング:
public sealed class ItemMap : ClassMap<Item>
{
public ItemMap()
{
Id(x => x.Id);
References(x => x.Owner);
}
}
public sealed class PersonMap : ClassMap<Person>
{
public PersonMap()
{
Id(x => x.Id);
Map(x => x.Name);
HasMany(x => x.Items).Inverse();
}
}
SchemaExport
NHibernate のクラスを使用してデータベース スキーマを作成しようとすると、問題が発生します。
Item テーブルは、実際には Person テーブルを参照する 2 つの列を取得します。
create table [Item] (
Id INT IDENTITY NOT NULL,
Owner_id INT null,
Person_id INT null,
primary key (Id)
)
何故ですか?
1 つの列で十分なはずです - 私が理解している限り、呼び出しInverse
は 2 番目の列を抑制する必要があります - しかし、そうではありません。
私は何を間違っていますか?