我刚刚开始作为开发人员工作,我一遍又一遍地遇到同样的问题。我一直收到这个错误:
异常(SessionFactory):在配置持久层期间发生异常。 / em NHibernate.Cfg.ConfigurationSchema.HibernateConfiguration..ctor(XmlReader hbConfigurationReader,Boolean fromAppSetting) em NHibernate.Cfg.Configuration.Configure(XmlReader textReader) em NHibernate.Cfg.Configuration.Configure(String fileName,Boolean ignoreSessionFactoryConfig) em DataLayer.Repository.NHibernateHelper.get_SessionFactory()于2016年12月14日16:52:52 0 PCService错误发布时间:2016/12/14 16:52:52参考资料定义了对象的定义。 em DataLayer.Repository.ConfigRobotRepository.FindByName(String name) 第7行的RSPC.PCService.ScheduleService()
我的hibernate.cfg.xml:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
<session-factory>
<property name="connection.provider">
NHibernate.Connection.DriverConnectionProvider
</property>
<property name="dialect">
NHibernate.Dialect.MySQLDialect
</property>
<property name="connection.driver_class">
NHibernate.Driver.MySqlDataDriver
</property>
<property name="connection.connection_string">
Server=localhost; Database=bd; Uid=ti; Pwd=************;
</property>
<property name="show_sql">false</property>
</session-factory>
</hibernate-configuration>
我的NHibernateHelper.cs:
public class NHibernateHelper
{
private static ISessionFactory _sessionFactory;
private static ISessionFactory SessionFactory
{
get
{
try
{
if (_sessionFactory == null)
//CreateSessionFactory();
{
var configuration = new Configuration();
//configuration.SetProperty(NHibernate.Cfg.Environment.ConnectionString, ConnectionString);
configuration.Configure("hibernate.cfg.xml");
configuration.AddAssembly(typeof(ConfigRobot).Assembly);
_sessionFactory = configuration.BuildSessionFactory();
}
return _sessionFactory;
}
catch (Exception e)
{
System.Diagnostics.StackTrace trace = new System.Diagnostics.StackTrace(e, true);
var frame = trace.GetFrame(0);
var line = frame.GetFileLineNumber();
Log("Exception (SessionFactory): " + e.Message + " / " + e.StackTrace + " at {0} " + line, Path.GetTempPath() + "PCService" + ".txt");
return null;
}
}
}
public static ISession OpenSession()
{
return SessionFactory.OpenSession();
}
非常感谢任何帮助!谢谢!
答案 0 :(得分:0)
为什么会出现这种情况有多种原因:
您确定configuration.Configure("hibernate.cfg.xml");
行正确获取配置文件吗?尝试指定完整路径。确保将其复制到bin(发布/调试)文件夹。
确保配置文件中提到的详细信息正确无误。
尝试使用代码进行配置。使用NHibernate.Cfg.Configuration cfg = new NHibernate.Cfg.Configuration();
。有关详细信息,请参阅此post。
检查抛出异常的InnerException
。继续沿着Exceptinn树跑。
确保您的实体和HBM文件正确并与数据库结构匹配。这是最不可能的原因,因为在提到类的确切名称的情况下,NHibernate会抛出不同的异常。