Search code examples
c#nhibernatefluent-nhibernate

Fluent NHibernate C#. How I can use table model(entity)and her Map class from two different assemblies?


How I can use table model(entity)and her Map class from two different assemblies? If I put map class in model's assembly, everything OK, but i need to use different assemblies for onion architecture. My entity class:

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; }

}

Map class:

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

    }

And session factory:

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();  

}


Solution

 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();
    }

Solution

  • 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();
    }