C # свободно владеет nhibernate - PullRequest
0 голосов
/ 08 февраля 2011

Как должна быть решена следующая конфигурация отображения?

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

public class Descriptor : RepositoryEntity
{
    public virtual String Name { get; set; }
    public virtual DateTime Timestamp { get; set; }
}

public class Proxy<TDescriptor> : RepositoryEntity
{
    public virtual TDescriptor Descriptor { get; set; }
    public virtual Byte[] SerializedValue { get; set; }
};

public class TestUnit : Proxy<Descriptor>
{

};

При тестировании сопоставления TestUnit возникают проблемы - говорит, что невозможно сопоставить элемент с общими параметрами . Это происходит, если я пытаюсь отобразить каждый класс из указанного ранее.

Если я попытаюсь отобразить все, кроме Proxy<T>, то получу, что есть no persister for the 'TestUnit'.

Если я перестану наследовать TestUnit от Proxy<Descriptor>, тест сопоставления будет работать нормально .


Имеет ли Fluent NHibernate возможность автоматизировать типы, унаследованные от какого-то конкретного шаблона Class<T>? Не могли бы вы помочь мне с отображением этих объектов?

1 Ответ

0 голосов
/ 08 февраля 2011

Я использовал комбинацию Fluent и Auto mappings.

Fluent mappings должен использоваться для генериков.

        Configuration = Fluently.Configure()
            .Database(SQLiteConfiguration.Standard.ShowSql().InMemory)
            .Mappings(x =>
                      {
                          x.FluentMappings.AddFromAssemblyOf<RepositoryEntity>();
                          x.AutoMappings.Add(autoPersistenceModel);
                      });
...