2013-07-19 2 views
0

У меня есть веб-проект и использовать NHibernate конфигурационный файл, как это:Nhibernate отображение файла конфигурации

<session-factory> 
    <property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property> 
    <property name="dialect">NHibernate.Dialect.MsSql2005Dialect</property> 
    <property name="connection.driver_class">NHibernate.Driver.SqlClientDriver</property> 
    <property name="connection.connection_string">Server=.\sqlexpress;Initial Catalog=afemanager;Integrated Security=no;User=sa;Password=password;</property> 
    <property name="proxyfactory.factory_class">NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle</property> 
    <property name="show_sql">true</property> 

    <mapping file="afe-serialization.hbm.xml"/> 
    <mapping file="afe-view.hbm.xml"/> 
    </session-factory> 

Затем я прочитал конфиг так:

public static ISession GetSession() 
{ 
     NHibernate.Cfg.Configuration config = new NHibernate.Cfg.Configuration();  
     return config.Configure(Path.Combine(HttpContext.Current.Server.MapPath("/"), "App_Data", NHIBERNATE_CFG)).BuildSessionFactory().OpenSession(); 
} 

Когда он работает, это исключение дисплей :

Ошибка сервера в приложении «/». Не удалось найти файл 'C: \ Program Files (x86) \ Common Files \ Microsoft Shared \ DevServer \ 11.0 \ afe-serialization.hbm.xml'.

Файл .hbm не расположен в этом каталоге. Мой вопрос в том, как установить файл сопоставления, чтобы получить файл .hbm из каталога App_Data.

Что-то вроде этого:

Path.Combine(HttpContext.Current.Server.MapPath("/"), "App_Data", "afe-serialization.hbm.xml") 

ответ

0

Вы можете установить свойство «Build Action» файл hbm.xml к «внедренным ресурсам», так что она будет скопирована в ваш проект рабочего каталог во время развертывания. Вы можете сделать это, используя окно свойств. В этом случае ваш файл сопоставления может быть в любом выбранном вами каталоге.

И ваш код может быть что-то вроде:

public static ISession GetSession() 
{ 
    NHibernate.Cfg.Configuration config = new NHibernate.Cfg.Configuration();  
    return config.AddAssembly("Assembly Name").BuildSessionFactory().OpenSession(); 
} 

Надеется, что это помогает!

0

Если вы используете

config.Configure(); 

без параметров она будет загружать ваши hibernate.hbm.xml по умолчанию из папки бин.

Смежные вопросы