fluent nhibernate:compositeid(),获取未映射id的消息



我搜索过谷歌和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。一旦我将类从自动映射中排除,它就可以正常工作了。

最新更新