我正在学习使用流利的nhibernate,并且无法理解如何创建映射。我有一个具有多列主键的表,但我无法正确映射它。我有以下流利的映射 -nhibernate流利的映射复合ID
public class MyEntityMappingOverride : IAutoMappingOverride<MyEntity>
{
public void Override(AutoMapping<MyEntity> mapping)
{
mapping.CompositeId()
.KeyProperty(x => x.Id_1, "Id_1")
.KeyProperty(x => x.Id_2, "Id_2");
mapping.References(x => x.otherEntity)
.Column("JoinColumn");
// Commented out to attempt to map to another entity on multiple columns
//mapping.HasMany(x => x.thirdEntit)
// .KeyColumns.Add("thirdId_1", "thirdId_2")
// .Cascade.All();
}
}
我遇到的问题是复合ID似乎并没有工作。
这是从生产的映射文件的一个片段 -
<id name="Id" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<column name="Id" />
<generator class="identity" />
</id>
我再拿到该列(ID),在查询任何表中不存在错误。
我错了,认为我的映射代码会产生正确的复合ID?我错过了什么或者做错了什么吗?
也许NHibernate自动映射约定重写你的流畅映射? – rebelliard 2011-05-19 13:23:38
也许就是这个问题 - 我将不得不考虑这个问题。注 - 我已经改编了SharpArchitecture中的一些作品来映射我的域名。我只是看着,可能会发生一些事情。我会看看。 – czuroski 2011-05-19 13:38:50
夏普?这绝对是。我有同样的问题,我不得不修改主键约定,所以它忽略了我的具体类型。 – rebelliard 2011-05-19 14:02:49