Свободный NHibernate C #. Как я могу использовать табличную модель (сущность) и ее класс Map из двух разных сборок? - PullRequest
0 голосов
/ 03 ноября 2018

Как я могу использовать табличную модель (сущность) и ее класс Map из двух разных сборок? Если я добавлю класс карты в сборку модели, все в порядке, но мне нужно использовать разные сборки для луковой архитектуры. Мой класс сущности:

public partial class SP_Quarters   
{
    public virtual  int id { get; set; }
    public virtual Nullable<byte> active { get; set; }
    public virtual string name0_ru { get; set; }
    public virtual string name0_uz { get; set; }

}

Класс карты:

public SP_QuartersMap()
    {
   Id(x => x.id);
   Map(x => x.active);
   Map(x => x.name0_ru);
   Map(x => x.name0_uz);

    }

И сессия фабрики:

public ISession OpenSession()
    {

        ISessionFactory sessionFactory = Fluently.Configure()

            .Database(MsSqlConfiguration.MsSql2012.ConnectionString(ConnectionString))
            .Mappings(m => m.FluentMappings.AddFromAssemblyOf<SP_Quarters>())
            .ExposeConfiguration(cfg => new SchemaUpdate(cfg).Execute(false, true))
            .BuildSessionFactory();
             return sessionFactory.OpenSession();  

}


Решение

 public ISession OpenSession()
    {
            ISessionFactory sessionFactory = Fluently.Configure()
            .Database(MsSqlConfiguration.MsSql2012.ConnectionString(ConnectionString))
            .Mappings(m => m.FluentMappings.AddFromAssemblyOf<SP_Quarters>().Add<SP_QuartersMap>())
                  .ExposeConfiguration(cfg => new SchemaUpdate(cfg).Execute(false, true))
            .BuildSessionFactory();

        return sessionFactory.OpenSession();
    }

Ответы [ 2 ]

0 голосов
/ 05 ноября 2018
public ISession OpenSession()
{
        ISessionFactory sessionFactory = Fluently.Configure()
        .Database(MsSqlConfiguration.MsSql2012.ConnectionString(ConnectionString))
        .Mappings(m => m.FluentMappings.AddFromAssemblyOf<SP_Quarters>().Add<SP_QuartersMap>())
              .ExposeConfiguration(cfg => new SchemaUpdate(cfg).Execute(false, true))
        .BuildSessionFactory();

    return sessionFactory.OpenSession();
}
0 голосов
/ 05 ноября 2018

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

m.FluentMappings.AddFromAssemblyOf<T>() указывает, из какой сборки получить сопоставления . Нет необходимости указывать T в качестве одного из классов сущностей.

Кроме того, AddFromAssemblyOf) сам по себе является просто вспомогательным методом, существуют другие способы определения местоположения сборочных карт.

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