从NHibernate配置部分配置Fluent NHibernate

从NHibernate配置部分配置Fluent NHibernate,nhibernate,fluent-nhibernate,Nhibernate,Fluent Nhibernate,我试图在我的解决方案中使用Fluent NHibernate,方法是使用以下NHibernate xml配置部分对其进行配置 <hibernate-configuration xmlns="urn:nhibernate-configuration-2.2" > <session-factory name="mitre"> <property name="dialect">NHibernate.Dialect.Oracle9iDialect<

我试图在我的解决方案中使用Fluent NHibernate,方法是使用以下NHibernate xml配置部分对其进行配置

<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配置部分中指定了程序集,我是否需要显式设置FluentMappings?如果是这样,那么是否可以通过编程方式从NHibernate配置中检索此数据

谢谢
Oz

在hibernate.cfg.xml中的映射程序集中搜索嵌入的*.hbm.xml文件。NHibernate对fluent映射(例如ClassMap)一无所知,因为这些映射是由fluent NHibernate引入的。因此,您需要:

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

为了使用类映射配置NHibernate。

感谢您的快速响应,James

那么我可以做以下事情吗

<?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>
这应该行得通。(顺便说一句,通常作为原始海报(OP),您应该编辑原始问题以添加更新,而不是添加答案。)
<?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"])));