C# Fluent NHibernate-配置持久层期间发生异常
我正在使用Fluent NHibernate和一个外部“hibernate.cfg.xml”文件 以下是出现错误的配置代码:C# Fluent NHibernate-配置持久层期间发生异常,c#,nhibernate,configuration,fluent-nhibernate,C#,Nhibernate,Configuration,Fluent Nhibernate,我正在使用Fluent NHibernate和一个外部“hibernate.cfg.xml”文件 以下是出现错误的配置代码: var configuration = new Configuration(); configuration.Configure(); _sessionFactory = Fluently.Configure(configuration) .Mappings(m => m.FluentMap
var configuration = new Configuration();
configuration.Configure();
_sessionFactory = Fluently.Configure(configuration)
.Mappings(m => m.FluentMappings.AddFromAssemblyOf<Template>())
.BuildSessionFactory();
return _sessionFactory;
var配置=新配置();
Configure.Configure();
_sessionFactory=fluntly.Configure(配置)
.Mappings(m=>m.FluentMappings.AddFromAssemblyOf())
.BuildSessionFactory();
返回工厂;
但当NHibernate尝试配置时,我遇到了一个错误:
var configuration = new Configuration();
configuration.Configure();
_sessionFactory = Fluently.Configure(configuration)
.Mappings(m => m.FluentMappings.AddFromAssemblyOf<Template>())
.BuildSessionFactory();
return _sessionFactory;
配置持久层期间发生异常
内部的例外情况是:
未配置ProxyFactoryFactory。
使用可用的NHibernate.ByteCode提供程序之一初始化会话工厂配置节的“proxyfactory.factory\u类”属性
我在谷歌上搜索,根据我找到的一些解决方案,我做了以下更改:
但我还是遇到了同样的异常。问题可能出在您的hibernate.cfg.xml中,请仔细检查是否使用了2.2版本,以及格式是否正确 映射应如下所示开始:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
除了您发布的错误之外,可能还会提供更多信息,因为该错误对于配置解析器来说是非常常见的。如果没有,也许您可以提供关于hibernate.cfg.xml的更多详细信息。好吧,我可以通过将.cfg.xml文件放在调用应用程序的bin中来解决这个错误 但现在,我得到了另一个错误:-( 未处理FluentNHibernate.Cfg.FluentConfigurationException 消息:创建SessionFactory时使用了无效或不完整的配置。有关详细信息,请检查潜在原因集合和InnerException *未通过数据库方法配置数据库。 这是我的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.MsSql2005Dialect</property>
<property name="connection.driver_class">NHibernate.Driver.SqlClientDriver</property>
<property name="connection.connection_string">Server=dev\sql2005;Initial Catalog=TestDB;Integrated Security=True</property>
<property name="show_sql">true</property>
</session-factory>
</hibernate-configuration>
NHibernate.Connection.DriverConnectionProvider
NHibernate.dialogue.mssql2005dialogue
NHibernate.Driver.SqlClientDriver
服务器=dev\sql2005;初始目录=TestDB;集成安全性=True
真的
有什么想法吗?我也有这个错误。当您不将映射文件(hibernate.cfg.xml)复制到构建目录时,它会触发 解决方案:
- 在解决方案资源管理器中,右键单击映射文件(hibernate.cfg.xml)上的,选择属性,然后确保复制到输出目录已选择了复制(如果选择了较新的)
- 未通过数据库方法配置数据库
- 潜在原因文本例外
*未通过数据库方法配置数据库。
如果您的映射错误(即..*映射类未成功解析),并且您未使用.database()方法配置数据库,则FluentConfiguration.BuildConfiguration()方法也可能引发此错误。 这有点令人困惑,因为它只在构建配置的步骤中发现,而不是在从assembly(通过AddFromAssemblyOf)添加这些类时发现 您可以通过执行一行代码来检查*Map类是否成功转换为HBM
m.FluentMappings.Add(typeof(YourMappedTypeMap)).ExportTo(@“c:\Temp\fluentmaps”)试图在App.config中配置数据库并通过Fluent NHibernate配置映射,我还得到了一个fluentnhibernate异常,说
显示详细信息的链接已停用,因此我无法获取任何进一步信息。搜索数小时后,我终于发现我的连接字符串有一个错误(“password=xyz;”而不是“password=xyz;”)正如Alex InTechno所说,这可能是映射文件或映射实体的定义中的错误。当我忘记映射类中的所有属性都必须定义为虚拟属性时,我也遇到了同样的错误
我对Resharper 8.1下的NUnit测试也有同样的问题
勾选“ReSharper | Options | Tools | Unit Testing |为每个具有测试的程序集使用单独的AppDomain”复选框,将其修复尝试在set|id和set|sampelList中设置受保护的修饰符。例如:
public virtual int Id {
get; protected set;
}
及
公共虚拟IList存储存储{
获取;保护集;
}
我开始接收
*未通过数据库方法配置数据库。
在未对我的代码进行任何更改的情况下,尝试连接到DB/2数据库时出现错误消息。在验证配置文件是否被复制到构建目录并验证我的XML格式正确且符合版本2.2之后,我最终检查了数据库以确保没有任何更改
原来连接帐户的密码已过期。它既不是无效的,也不是无效的——密码只是过期了。我不知道为什么过期密码会出现这样一条奇怪的错误消息。看起来这个错误可能是一堆不同的东西。我也犯了同样的错误,最终发现这是因为我从项目中排除了一个未使用的视图和映射。不知道这是如何导致错误的,但当我将其添加回时,错误就消失了。如果在Visual Studio中单击异常帮助程序,您可以看到
InnerException
(可能还有InnerException
)。您能否查找它们并尽可能多地包含错误信息?他们可能揭示了真正的问题。继续沿着Exceptinn树往下跑,直到你找到有用的东西。我犯了这个错误
public virtual IList<Store> StoresStockedIn {
get; protected set;
}