2012-03-09 1 views
0

Я начал изучать NHibernate с 2 недель, и я прочитал книгу NHibernate 3 для новичков. К сожалению, книга написана в версии 3.1, и с тех пор некоторые вещи изменились. Нет поддержки замка больше, ..MVC3 + NHibernate 3.2: Как настроить и отобразить NHibernate с помощью Web.config и Global.asax с помощью модели - первый подход

Я надеялся найти пример-приложение или учебник в 3.2, но не могу найти что-то подобное в любом месте. Большинство вещей на самом деле являются блогами о замене Nhibernates 3.2 для FNH.

С сегодняшнего дня sessionfactory и прочее работают без каких-либо ошибок (с использованием подхода с использованием сеанса на запрос с помощью ActionFilter), но я не могу получить свою базу данных. Я сопоставляю классический способ с файлами .hbm.xml для каждого объекта. После прочтения много веб-сайтов и блогов, я, наконец, сделали эту конфигурацию:

protected void Application_Start(object sender, EventArgs e) 
    { 
     AreaRegistration.RegisterAllAreas(); 

     RegisterGlobalFilters(GlobalFilters.Filters); 
     RegisterRoutes(RouteTable.Routes); 

     var nhConfig = new Configuration().Configure(); 
     nhConfig.AddAssembly(typeof(Book).Assembly); 
     BuildSchema(nhConfig); 

     SessionFactory = nhConfig.BuildSessionFactory(); 
    } 

    private static void BuildSchema(Configuration nhConfig) 
    { 
     new SchemaExport(nhConfig).Execute(false, true, false); 
    } 

Мой соответствующий код web.config выглядит следующим образом:

<connectionStrings> 
    <add name="db" connectionString="Server=.\SQLExpress; Database=NHbTest; Trusted_Connection=SSPI"/> 
    </connectionStrings> 

<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2"> 
     <session-factory> 
      <property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property> 
      <property name="dialect">NHibernate.Dialect.MsSql2008Dialect,NHibernate</property> 
      <property name="connection.connection_string_name">db</property> 
      <property name="adonet.batch_size">100</property> 
      <property name="current_session_context_class">web</property> 
     </session-factory> 
    </hibernate-configuration> 

Кто-то видит, что я делаю неправильно? Thx заранее.

+0

Прежде чем использовать NH 3.2, я настоятельно рекомендую изучить Fluent NHibernate. В настоящее время он официально выпущен только с поддержкой NH 3.1, но это лучший опыт. –

+0

3.2 не поддерживает FNH из-за его внутреннего кода. Было бы глупо работать со старой версией Nhibernate, если есть более новая, не так ли? И, конечно же, я бы предпочел сделать это с помощью XML-сопоставления в файлах .hbm.xml из-за причин диссертации. – Gigi2m02

+0

FNH поддерживает 3.2 неофициально. Официальная поддержка .. придет. И, честно говоря, я сомневаюсь, что когда-нибудь прикоснусь к NH, если не смогу использовать FNH, потому что это делает такое огромное различие в удобстве использования. Тем не менее, если у вас есть причина тезиса использовать файлы .hbm.xml. Надеюсь, ваш тезис о том, как crappy xml является языком конфигурации? ;) –

ответ

0

Я нашел проблему. Я забыл предоставить файлам .hbm.xml свойство «встроенный ресурс» вместо «контента» в действии сборки. Какая хромая ошибка. Пробовал все, теперь хорошо работает.

Thx для ваших ответов.