Josh Anderson
Josh Anderson

Reputation: 6005

Odd error building FluentNH configuration

I have a Fluent NHibernate project I'm working on, and doing some testing I have run into a very strange error:

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).

The related entity reported is:

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

I don't have any class named DisplayClass, but I do have an Account entity. I'm using a primary key convention that looks like this:

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

My Account class inherits from an EntityBase class that declares the ID as:

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

I'm confident that I'm setting up the configuration properly and that the conventions are being picked up, but just in case I added an override and specifically mapped the ID for the Account class. No dice.

Any ideas what's going on here?

I'm using FNH 1.3.0.733 with NHibernate 3.3.1.4000 (both loaded off NuGet).

Upvotes: 3

Views: 141

Answers (1)

Josh Anderson
Josh Anderson

Reputation: 6005

Looks like I figured it out. This SO answer had the key. Because some of the methods on the class use lambdas, the compiler creates classes that you can exclude in the DefaultAutomappingConfiguration by specifying !type.IsDefined(typeof(CompilerGeneratedAttribute), false) as part of the ShouldMap override.

Upvotes: 4

Related Questions