NHibernate 有一个名为 Mapping by code 的系统,它使开发人员可以在代码中映射他们的数据库(正如其名称所示)。我正在使用 NHibernate 3.3.1。
我已经为两个课程做了这个:“Gebruiker”和“Lijst”。他们都有一个彼此的列表,因此这是多对多关系的经典示例。
映射如下:
格布鲁克
Set(l => l.Lijsten, map =>
{
map.Table("LijstGebruiker");
map.Cascade(Cascade.All);
map.Inverse(true);
map.Key(k => k.Column("Gebruiker"));
}, map => map.ManyToMany(p => p.Column("Lijst")));
李斯特
Set(l => l.Gebruikers, map =>
{
map.Table("LijstGebruiker");
map.Cascade(Cascade.All);
map.Key(k => k.Column("Lijst"));
}, map => map.ManyToMany(p => p.Column("Gebruiker")));
据我所知,这应该会生成带有 Gebruiker 和 Key 列的“LijstGebruiker”表。
相反:NHibernate 生成一个包含三列的表 LijstGebruiker,除了预期的两列之外,还有一列:elt。Elt 还使用外键引用 Lijst。
根据我在互联网上找到的有关此的网站,这不应该发生,但确实如此。我究竟做错了什么?