Как создать ISessionFactory с помощью FluentNHibernate

#nhibernate #orm #fluent-nhibernate #nhibernate-mapping

#nhibernate #orm #fluent-nhibernate #nhibernate-отображение

Вопрос:

В проекте MyProject.Data у меня есть папка с именем mappings, в которой хранятся все сопоставления.

 namespace MyProject.Data.Mappings {
    public class EmployeeMap : ClassMap<Employee>
    {
        public EmployeeMap()
        {
            Id(x => x.Id);
            Map(x => x.FirstName).Not.Nullable().Length(100);
            Map(x => x.LastName).Not.Nullable().Length(100);
        }
    } }
  

В проекте MVC, в web.config :

   <connectionStrings>
    <add name="db" connectionString="Data Source=localhostSQLExpress;Initial Catalog=MyDB;Integrated Security=True"/>
  </connectionStrings>
  

В global.asax.cs я бы хотел создать ISessionFactory :

 var nhConfig = Fluently.Configure().Database(MsSqlConfiguration.MsSql2008
   .ConnectionString(c => c.FromConnectionStringWithKey("db")))
   .Mappings(m => m.FluentMappings.AddFromAssemblyOf<?????>())
   .BuildConfiguration();
ISessionFactory SessionFactory = nhConfig.BuildSessionFactory();
  

Мне нужен :
.Mappings(m => m.FluentMappings.AddFromAssemblyOf<?????>()) для каждого файла сопоставления?

Спасибо,

Ответ №1:

Нет, это служит для того, чтобы указать FNH, в какой сборке искать все ваши сопоставления. Просто укажите любой из них, и все готово.

Итак, приведенный ниже код будет работать для вас, если все ваши сопоставления находятся в одной сборке.

 var nhConfig = Fluently.Configure().Database(MsSqlConfiguration.MsSql2008
.ConnectionString(c => c.FromConnectionStringWithKey("db")))
.Mappings(m => m.FluentMappings.AddFromAssemblyOf<EmployeeMap>())
.BuildConfiguration();
  

Комментарии:

1. вы имеете в виду заменить «????» на MyProject.Data.Mappings. EmployeeMap и будет ли нормально для всех других отображений?

2. @Kris-I Да, если все ваши сопоставления будут находиться в одной сборке (скорее всего, если все они находятся в одном проекте), то указание одного из типов приведет к загрузке этой сборки, чтению всех типов и динамическому добавлению всех произвольных сопоставлений.