C# 无法找到名为的实体的持久化程序
我试图连接到nHibernate,但我没有这样做。我有一个如下所示的配置文件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
<?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混合时可能存在一些配置错误。