0

我已经搜索了 Google 和 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,我仍然认为这个问题是开放的。随意提出答案。

4

1 回答 1

0

我发现这是由于自动映射试图自动映射 ID 即使我的班级有一个实际的地图 - 它仍然试图自动映射 ID。一旦我从自动映射中排除了该类,它就工作得很好。

于 2019-11-29T09:03:51.780 回答