NHibernate DuplicateMappingException when matching abstract class and subclass

I have an abstract class and subclasses of this, and I want to map this to my database using NHibernate. I use Fluent, and reads on the wiki how to do the mapping. But when I add a subclass mapping, NHHernernate.DuplicateMappingException is thrown when it is displayed. What for?

Here are my (simplified) classes:

public abstract class FieldValue
{
    public int Id { get; set; }
    public abstract object Value { get; set; }
}

public class StringFieldValue : FieldValue
{        
    public string ValueAsString { get; set; }
    public override object Value
    {
        get
        {
            return ValueAsString; 
        } 
        set
        {
            ValueAsString = (string)value; 
        }
    } 
}

And display:

public class FieldValueMapping : ClassMap<FieldValue>
{
    public FieldValueMapping()
    {
        Id(m => m.Id).GeneratedBy.HiLo("1");
        // DiscriminateSubClassesOnColumn("type"); 
    }
}

public class StringValueMapping : SubclassMap<StringFieldValue>
{
    public StringValueMapping()
    { 
        Map(m => m.ValueAsString).Length(100);
    }
}

And an exception:

NHibernate.MappingException: failed to compile the mapping document: (XmlDocument) ----> NHibernate.DuplicateMappingException: duplication of class / entity mapping NamespacePath.StringFieldValue

Any ideas?

+5
2

. , PersistenceModel, :

public class MappingsPersistenceModel : PersistenceModel
{
    public MappingsPersistenceModel()
    {
        AddMappingsFromAssembly(typeof(FooMapping).Assembly);
        AddMappingsFromAssembly(typeof(BarMapping).Assembly);
        // Where FooMapping and BarMapping is in the same Assembly. 
    }
}

-, ClassMap. SubclassMap , - , , DuplicateMappingException. PersistenceModel .

+7

, .

+2

All Articles