3

私が取り組んでいるFluentNHibernateプロジェクトがあり、いくつかのテストを行っていると、非常に奇妙なエラーが発生しました。

The entity '<>c__DisplayClass3' doesn't have an Id mapped. Use the Id method to map your identity property. For example: Id(x => x.Id).

報告された関連エンティティは次のとおりです。

{Name = "<>c__DisplayClass3" FullName = "TPLLCPortal.Domain.Account+<>c__DisplayClass3"}

という名前のクラスはありませんDisplayClassが、Accountエンティティはあります。私は次のような主キー規則を使用しています:

public class PrimaryKeyConvention : IIdConvention
{
    public void Apply(IIdentityInstance instance)
    {
        instance.GeneratedBy.GuidComb();
    }
}

私のクラスは、IDを次のように宣言するAccountクラスを継承しています。EntityBase

/// <summary>
/// Gets or sets the id.
/// </summary>
/// <value>The id.</value>
public virtual Guid Id { get; protected internal set; }

構成が適切に設定され、規則が適用されていることを確信していますが、念のため、オーバーライドを追加して、AccountクラスのIDを具体的にマッピングしました。サイコロはありません。

ここで何が起こっているのかアイデアはありますか?

NHibernate3.3.1.4000でFNH1.3.0.733を使用しています(どちらもNuGetからロードされています)。

4

1 に答える 1

4

私はそれを理解したように見えます。このSOの答えが鍵を握っていました。クラスの一部のメソッドはラムダを使用するため、コンパイラーは、オーバーライドの一部としてDefaultAutomappingConfiguration指定することでで除外できるクラスを作成します。!type.IsDefined(typeof(CompilerGeneratedAttribute), false)ShouldMap

于 2013-01-11T01:31:36.830 に答える