C # NHibernate mapping - PullRequest
       25

C # NHibernate mapping

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

Допустим, у меня есть свободно настроенные NHibernate настройки, в которых используются Fluent mappings и Automappings.

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

Теперь - возможно ли проверить, что какой-либо произвольный тип T сопоставлен (или не сопоставлен) этой конфигурации?создайте пуленепробиваемое хранилище, и я думаю, что этот момент очень важен.

Спасибо

Ответы [ 2 ]

4 голосов
/ 09 февраля 2011

Да.После создания SessionFactory сохраните конфигурацию и настройте этот метод в своем репозитории:

public bool IsMapped (Type testType)
{
   return MyConfiguration.ClassMappings.Any(m => m.EntityName == testType.FullName);
}

AFAIK. Его можно использовать для обнаружения классов, отображаемых как на языке XML, так и на языке XML.Вам может потребоваться более точное сравнение, если у вас есть классы с одинаковыми именами в разных пространствах имен, но это должно помочь вам начать.

Что-то, что вы также можете использовать при разработке «пуленепробиваемого» репо - EntityNotFoundDelegate,который позволяет вам определить пользовательский метод для работы с сущностями, предоставленными хранилищу, для которого у него нет сопоставления.Вы можете, потенциально, использовать это, чтобы спросить другой репозиторий, может ли он обрабатывать сущность, или отправить его обратно в шаблон Стратегии, который может иметь несколько возможных репо для попытки.

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

Кит в значительной степени ответил на ваш вопрос, однако для большей пуленепробиваемости вы можете проверить класс PersistenceSpecification.(Требуется знание типа T, хотя)

http://www.packtpub.com/article/using-fluent-nhibernate-persistence-tester-and-ghostbusters-test

...