Fluent NHibernate错误放置的重复字段
我想我误解了这是怎么回事。这是我的fluent映射:Fluent NHibernate错误放置的重复字段,nhibernate,fluent-nhibernate,Nhibernate,Fluent Nhibernate,我想我误解了这是怎么回事。这是我的fluent映射: public class FunctionInfoMap : ClassMap<FunctionInfo> { public FunctionInfoMap() { Id(x => x.Id); Map(x => x.Name); Map(x => x.Signature); Map(x => x.IsNative); Map(x => x.ClassId);
public class FunctionInfoMap : ClassMap<FunctionInfo>
{
public FunctionInfoMap()
{
Id(x => x.Id);
Map(x => x.Name);
Map(x => x.Signature);
Map(x => x.IsNative);
Map(x => x.ClassId);
References(x => x.Class, "ClassId");
HasMany(x => x.CallsAsParent).Inverse();
HasMany(x => x.CallsAsChild).Inverse();
Table("Functions");
}
}
public class CallMap : ClassMap<Call>
{
public CallMap()
{
CompositeId()
.KeyProperty(x => x.ThreadId)
.KeyProperty(x => x.ParentId)
.KeyProperty(x => x.ChildId)
.Mapped();
Map(x => x.ThreadId).Index("Calls_ThreadIndex");
Map(x => x.ParentId).Index("Calls_ParentIndex");
Map(x => x.ChildId).Index("Calls_ChildIndex");
Map(x => x.HitCount);
References(x => x.Thread, "ThreadId");
References(x => x.Parent, "ParentId");
References(x => x.Child, "ChildId");
Table("Calls");
}
}
public class SampleMap : ClassMap<Sample>
{
public SampleMap()
{
CompositeId()
.KeyProperty(x => x.ThreadId)
.KeyProperty(x => x.FunctionId)
.Mapped();
Map(x => x.ThreadId);
Map(x => x.FunctionId);
Map(x => x.HitCount);
References(x => x.Thread, "ThreadId");
References(x => x.Function, "FunctionId");
Table("Samples");
}
}
我不明白它为什么在那里,因为它应该只存在于Samples表中。您不应该同时映射外键和多吨一关系。而不是
Map(x => x.ThreadId).Index("Calls_ThreadIndex");
Map(x => x.ParentId).Index("Calls_ParentIndex");
Map(x => x.ChildId).Index("Calls_ChildIndex");
Map(x => x.HitCount);
References(x => x.Thread, "ThreadId");
References(x => x.Parent, "ParentId");
References(x => x.Child, "ChildId");
将多个映射到使用外键的
Map(x => x.HitCount);
References(x => x.Thread, "ThreadId");
References(x => x.Parent, "ParentId");
References(x => x.Child, "ChildId");
我不知道这是否能解决你的问题。另外,我强烈建议不要使用复合键。用代理键(标识)和唯一索引替换它们 我终于或多或少地解决了这个问题。FunctionInfoMap上的两个集合让NHibernate感到困惑,因为它们实际上并没有引领任何方向。添加KeyColumn条目以将它们链接到父级和子级关联,纠正了杂散字段。不幸的是,杂散字段仍然存在。
Map(x => x.HitCount);
References(x => x.Thread, "ThreadId");
References(x => x.Parent, "ParentId");
References(x => x.Child, "ChildId");