Свободная иерархия - PullRequest
2 голосов
/ 22 июня 2011

У меня есть следующая ситуация с беглым nhibernate:

public class Stuff
{
    public Stuff()
    {
        Entities = new List<Entity>();
    }

    public virtual int Id { get; set; }
    public virtual IList<Entity> Entities { get; set; }
}

public abstract class Entity
{
    public virtual int Id { get; set; }

    public virtual string Type { get; set; }
    public virtual Stuff Stuff { get; set; }
}

public class Person : Entity
{
    public virtual string FirstName { get; set; }
    public virtual string LastName { get; set; }
}

public class Animal : Entity
{
    public virtual string Species { get; set; }
}

И затем, у меня есть следующий код для использования automap и генерации этих сопоставлений:

        var sessionFactory =
            Fluently.Configure().Database(persistenceConfigurer).Mappings(
                m =>
                m.AutoMappings.Add(
                    AutoMap.Source(new Types(typeof(Entity), typeof(Person), typeof(Animal), typeof(Stuff))))
                    .ExportTo(@"e:\")).ExposeConfiguration(BuildSchema).BuildSessionFactory();

однако, что происходитявляется то, что я получаю следующее исключение:

---> NHibernate.MappingException: ассоциация ссылается на не отображенный класс: ConsoleApplication1.Models.Entity

, если я делаю класс сущности не абстрактным, это работает, однакоЯ хотел бы избежать этой таблицы в базе данных, но по-прежнему поддерживать концепцию иерархии с re

1 Ответ

2 голосов
/ 22 июня 2011

Вам нужно добавить свои автоматические сопоставления, подобные этому

AutoMap.AssemblyOf<Entity>(yourConfiguration).IgnoreBase<Entity>();

Мало того, что это игнорирует базовый класс Entity, но вам не нужно добавлять каждую сущность вручную, если каждая модель наследует отEntity.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...