1,Test 'M:XXXX.can_get_all' failed: The type initializer for 'XXXX.DAL.NHibernateSession' threw an exception.
System.TypeInitializationException: The type initializer for 'XXXX.DAL.NHibernateSession' threw an exception. ---> NHibernate.MappingException: Could not compile the mapping document: XXXX.OperationOrganize.hbm.xml ---> NHibernate.MappingException: persistent class SMS.Online.Model.OperationOrganize, XXXX.Model.dll not found ---> System.IO.FileNotFoundException: Could not load file or assembly 'XXXX.Model.dll' or one of its dependencies. The system cannot find the file specified.
File name: 'XXXX.Model.dll'
原因是 画蛇添足 OperationOrganize.hbm.xml 的assembly多加了个dll,<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="XXXX.Model" assembly="XXXX.Model.dll" >
2, Test 'M:XXXX.Tests.OrgTest.can_get_all' failed: could not execute query
[ exec usp_OperationOrganizeGetByManageID @p0 ]
Name:OrgManageID - Value:506
[SQL: exec usp_OperationOrganizeGetByManageID @p0]
NHibernate.Exceptions.GenericADOException: could not execute query
[ exec usp_OperationOrganizeGetByManageID @p0 ]
Name:OrgManageID - Value:506
[SQL: exec usp_OperationOrganizeGetByManageID @p0] ---> System.IndexOutOfRangeException: Sys_ID
at System.Data.ProviderBase.FieldNameLookup.GetOrdinal(String fieldName)
at System.Data.SqlClient.SqlDataReader.GetOrdinal(String name)
at NHibernate.Driver.NHybridDataReader.GetOrdinal(String name)
原因是 连的数据库不对,存储过程exec usp_OperationOrganizeGetByManageID版本不一样。
3, Could not load type XXXX.Model.PaymentAccountGenerateLog. Possible cause: no assembly name specified.
原因:有命名查询的时候应该这样设置hibernate-mapping节点。
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
namespace="XXXX.Model"
assembly="XXXX.Model" >
<class name="PayGenLog" table="tbl_Payment_Account_Generate_Log" lazy="true">
...
</class>
<sql-query name="GenerateLogGetByDate">
....
/sql-query>
</hibernate-mapping>
而不是类名和程序集名都放在class节点。
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
<class name="XXXX.Model.PayGenLog,XXXX.Model" table="tbl_Payment_Account_Generate_Log" lazy="true">
...
</class>
<sql-query name="GenerateLogGetByDate">
....
/sql-query>
</hibernate-mapping>