2011-02-24 4 views
2

내 코드 파일에서 다음과 NHibernate에 XML 구성 섹션구성 유창함 NHibernate에는 자 NHibernate 설정 섹션에서

<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2" > 
    <session-factory name="mitre"> 
    <property name="dialect">NHibernate.Dialect.Oracle9iDialect</property> 
    <property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property> 
    <property name="connection.driver_class">NHibernate.Driver.OracleDataClientDriver</property> 
    <property name="connection.connection_string">Data Source=YOUR_DB_SERVER;Database=Northwind;User ID=YOUR_USERNAME;Password=YOUR_PASSWORD;</property> 
    <property name="connection.isolation">ReadCommitted</property> 
    <property name="default_schema">TRATE</property> 
    <!-- HBM Mapping Files --> 
    <mapping assembly="Markel.Mint.Mitre.Data" /> 
    </session-factory> 
</hibernate-configuration> 

으로 구성하여 내 솔루션에 능통 자 NHibernate를 사용하기 위해 노력하고있어, ISession를 인스턴스화합니다 :

NH_Cfg.Configuration cfg = new NH_Cfg.Configuration(); 
cfg.Configure(); 

Fluently.Configure(cfg).Mappings(m => m.FluentMappings = ????) 

내 질문에 내가 이미 NHibernate 설정 섹션에서 어셈블리를 지정했다면 명시 적으로 FluentMappings을 설정해야합니까? 만약 그렇다면, NHibernate config로부터이 데이터를 프로그램 적으로 검색 할 수 있습니까?

감사 오즈

답변

5

hibernate.cfg.xml 내에서의 매핑 어셈블리는 내장 * .hbm.xml 파일을 검색합니다. NHibernate는 Fluent NHibernate에 의해 소개 된 것과 같이 Fluent 매핑 (예 : ClassMap)에 대해 아무것도 모릅니다. 그래서 당신이 필요합니다

Fluently.Configure(cfg).Mappings(m => m.FluentMappings.AddFromAssemblyOf<SomeDomainType>(); 

당신의 ClassMap 매핑을 사용하여 자 NHibernate를 구성하기 위해.

2

빠른 응답 주셔서 감사합니다.

다음 중 수행 할 수있는 작업은 무엇입니까?

<?xml version="1.0" encoding="utf-8" ?> 
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2" > 
    <session-factory name="mitre"> 
    <property name="dialect">NHibernate.Dialect.Oracle9iDialect</property> 
    <property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property> 
    <property name="connection.driver_class">NHibernate.Driver.OracleDataClientDriver</property> 
    <property name="connection.connection_string">Data Source=YOUR_DB_SERVER;Database=Northwind;User ID=YOUR_USERNAME;Password=YOUR_PASSWORD;</property> 
    <property name="connection.isolation">ReadCommitted</property> 
    <property name="default_schema">TRATE</property> 
    <property name="fluent.nhibernate.fluentmapping">Markel.Mint.Mitre.Core.Domain</property> 
    </session-factory> 
</hibernate-configuration> 

그리고 내 코드는 따라서 속성을 참조 할 수 : 작업을해야

NH_Cfg.Configuration cfg = new NH_Cfg.Configuration(); cfg.Configure();   
Fluently.Configure(cfg).Mappings(m => m.FluentMappings.AddFromAssembly(Assembly.Load(cfg.Properties["fluent.nhibernate.fluentmapping"]))); 
+1

합니다. (BTW - 보통 원래의 포스터 (OP)로 원래 질문을 편집하여 대답을 추가하는 대신 업데이트를 추가해야합니다.) –