我正在尝试使用 Fluent NHibernate 建模一个简单的 1:n 关系:
有人和项目。一个人拥有零到无限的物品,而一件物品属于一个人。
我的数据类:
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();
}
}
当我尝试使用 NHibernate 的SchemaExport
类创建数据库模式时,出现了我的问题。
Item 表实际上有两列引用 Person 表:
create table [Item] (
Id INT IDENTITY NOT NULL,
Owner_id INT null,
Person_id INT null,
primary key (Id)
)
这是为什么?
一列应该就足够了——据我所知,调用Inverse
应该抑制第二列——但是,事实并非如此。
我究竟做错了什么?