我搜索过谷歌和SO,但没有发现任何人有同样的问题。这是我的型号:
public class Hierarchy
{
public virtual Event Prerequisite { get; set; }
public virtual Event Dependent { get; set; }
public override bool Equals(object obj)
{
var other = obj as Hierarchy;
if (other == null)
{
return false;
}
else
{
return this.Prerequisite == other.Prerequisite && this.Dependent == other.Dependent;
}
}
public override int GetHashCode()
{
return (Prerequisite.Id.ToString() + "|" + Dependent.Id.ToString()).GetHashCode();
}
}
这是我的地图:
public class HierarchyMap : ClassMap<Hierarchy>
{
public HierarchyMap()
{
CompositeId()
.KeyReference(h => h.Prerequisite, "PrerequisiteId")
.KeyReference(h => h.Dependent, "DependentId");
}
}
这是一直存在的结果:
{"The entity 'Hierarchy' doesn't have an Id mapped. Use the Id method to map your identity property. For example: Id(x => x.Id)."}
我需要做一些特殊的配置来启用复合id吗?我有最新的FNh(截至2012年6月29日)。
编辑
尽管我决定映射一个Id并引用2个事件,而不是使用CompositeId,但我仍然认为这个问题是开放的。请随意提出答案。
我发现这是由于自动映射试图自动映射ID尽管我的类有一个实际的映射,但它仍然试图自动映射ID。一旦我将类从自动映射中排除,它就可以正常工作了。