口若悬河的Nhibernate和composedID外键
我有两个类,我正试图在饶舌的Nhibernate中映射它们 映射如下所示口若悬河的Nhibernate和composedID外键,nhibernate,Nhibernate,我有两个类,我正试图在饶舌的Nhibernate中映射它们 映射如下所示 public class FooMap : ClassMapping<Foo> { Table("FooTableName"); ComposedId(compIDMapper => { compIDMapper.Property(x => x.SomeInt, m => m.Column("SomeInt")); compI
public class FooMap : ClassMapping<Foo>
{
Table("FooTableName");
ComposedId(compIDMapper =>
{
compIDMapper.Property(x => x.SomeInt, m => m.Column("SomeInt"));
compIDMapper.ManyToOne(x => x.SomeReference, m => m.Column("SomeReference"));
});
}
public class BarMap : ClassMapping<Bar>
{
Table("BarTableName");
Id(x => x.ID, m => m.Column("barID"));
ManyToOne(x => x.Foo, m => m.Columns( columnMapper =>
{
columnMapper.Name("SomeIntID"); //Both of these columns are in the BarTableName like they should be
columnMapper.Name("SomeReferenceID");
}));
}
我不确定我做错了什么,看起来应该行得通,但我已经在这个问题上绞尽脑汁有一段时间了,还没有取得任何进展。有没有关于我做错了什么的想法?终于找到了答案,把它贴在其他人的面前 我的问题是误解了列映射器。应该是这样的:
ManyToOne(x => x.Foo, m => m.Columns(new Action<IColumnMapper>[]
{
colMapper => colMapper.Name("SomeIntID"),
colMapper => colMapper.Name("SomeReferenceID")
}));
manytone(x=>x.Foo,m=>m.Columns(新操作[])
{
colMapper=>colMapper.Name(“SomeIntID”),
colMapper=>colMapper.Name(“SomeReferenceID”)
}));
这就解决了问题。当我看到函数签名时,应该已经注意到了,但我完全没有注意到。还有另一种更短的方法
ManyToOne(x => x.Foo, m => m.Columns(c=> c.Name("SomeIntID"),c => c.Name("SomeReferenceID")));
ManyToOne(x => x.Foo, m => m.Columns(c=> c.Name("SomeIntID"),c => c.Name("SomeReferenceID")));