C# 无法找到名为的实体的持久化程序

C# 无法找到名为的实体的持久化程序,c#,fluent-nhibernate,fluent-nhibernate-mapping,C#,Fluent Nhibernate,Fluent Nhibernate Mapping,我试图连接到nHibernate,但我没有这样做。我有一个如下所示的配置文件 <?xml version="1.0" encoding="utf-8" ?> <hibernate-configuration xmlns="urn:nhibernate-configuration-2.2"> <session-factory> <property name="connection.connection_string_name">EM

我试图连接到nHibernate,但我没有这样做。我有一个如下所示的配置文件

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
  <session-factory>   
    <property name="connection.connection_string_name">EMS</property>
    <property name="show_sql">false</property>
    <property name="generate_statistics">true</property>
    <property name="current_session_context_class">thread_static</property>
    <property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
    <property name="connection.driver_class">NHibernate.Driver.SqlClientDriver</property>
    <property name="dialect">NHibernate.Dialect.MsSql2012Dialect</property>
    <property name="cache.use_second_level_cache">false</property>
    <property name="cache.use_query_cache">false</property>
    <property name="default_schema">EMS.dbo</property>
    <property name="adonet.batch_size">200</property>
    <mapping assembly="EMS.Infra.Data"/>
  </session-factory>
</hibernate-configuration>

邮政特快专递
假的
真的
静态线程
NHibernate.Connection.DriverConnectionProvider
NHibernate.Driver.SqlClientDriver
NHibernate.dial.MsSql2012Dialect
假的
假的
EMS.dbo
200
并具有如下所示的配置文件加载方法

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
  <session-factory>   
    <property name="connection.connection_string_name">EMS</property>
    <property name="show_sql">false</property>
    <property name="generate_statistics">true</property>
    <property name="current_session_context_class">thread_static</property>
    <property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
    <property name="connection.driver_class">NHibernate.Driver.SqlClientDriver</property>
    <property name="dialect">NHibernate.Dialect.MsSql2012Dialect</property>
    <property name="cache.use_second_level_cache">false</property>
    <property name="cache.use_query_cache">false</property>
    <property name="default_schema">EMS.dbo</property>
    <property name="adonet.batch_size">200</property>
    <mapping assembly="EMS.Infra.Data"/>
  </session-factory>
</hibernate-configuration>
//为cfg创建实例

configuration = new Configuration(); // read config default style


configuration.AddAssembly(Assembly.GetCallingAssembly());//forcely add mapping assembly

//add fluent auto mapping and conventions
                    Fluently.Configure(configuration).Mappings(m =>
                    m.FluentMappings.AddFromAssemblyOf<Employee>().Conventions.Add(
                        PrimaryKey.Name.Is(x => "Id"),
                        ForeignKey.EndsWith("Id")));

                    //add dialect and connections strting
                    configuration.SessionFactory().Integrate.Using<MsSql2012Dialect>().Connected.ByAppConfing("EMS");//EMS is the connection name
configuration=newconfiguration();//读取配置默认样式
AddAssembly(Assembly.GetCallingAssembly())//强制添加映射程序集
//添加流畅的自动映射和约定
fluent.Configure(配置).Mappings(m=>
m、 FluentMappings.AddFromAssemblyOf().Conventions.Add(
PrimaryKey.Name.Is(x=>“Id”),
ForeignKey.EndsWith(“Id”);
//添加方言和连接strting
configuration.SessionFactory().Integrate.Using().Connected.ByAppConfing(“EMS”)//EMS是连接名
我的映射文件

public class EmployeeMap : ClassMap<Employee>
    {
        public EmployeeMap()
        {
            Table("HRM.Employee");
            Id(x => x.Id).GeneratedBy.Identity().UnsavedValue(0);
            Map(x => x.LocationId);
            Map(x => x.SalutationId);
            Map(x => x.FirstName);
            Map(x => x.MiddleName);
            Map(x => x.LastName);
            Map(x => x.NickName);
            Map(x => x.EmpName);
        }
    }
公共类EmployeeMap:ClassMap
{
公共雇员地图()
{
表(“人力资源管理员工”);
Id(x=>x.Id).GeneratedBy.Identity().UnsavedValue(0);
Map(x=>x.LocationId);
Map(x=>x.saltationid);
Map(x=>x.FirstName);
Map(x=>x.MiddleName);
Map(x=>x.LastName);
Map(x=>x.昵称);
Map(x=>x.EmpName);
}
}
当使用此方法获取数据时 _会话.Get(id)

已发生错误

中发生类型为“NHibernate.HibernateException”的异常 NHibernate.dll,但未在用户代码中处理

其他信息:无法找到实体的持久化程序 命名为“EMS.Domain.Hrm.Entities.Employee”


请告诉我您的想法。

例外情况是,
员工
未映射。
Employee
EmployeeMap
是否在同一程序集中?两者都不是相同的程序集这就是问题所在。用
EmployeeMap
而不是
Employee
交换
m.FluentMappings.AddFromAssemblyOf()
,那么它应该可以工作。@Rabban,同样的错误。好的,但这肯定是个错误。使用
m.FluentMappings.AddFromAssemblyOf()
时,您必须告诉他映射的集合,而不是实体的集合。您是否尝试删除NHibernate配置并尝试使用FluentNhibernate配置所有配置?将NHibernateConfig与FluentConfig混合时可能存在一些配置错误。