使用ADO.NET或者其他的ORM框架的时候,抛出这个异常,可能是连接的数据库不对。也许程序要连的数据库是Database1,而你的配置文件或者连接字符串是拷贝过来的,修改的时候疏忽了没有改完全,就会出现这个异常。
异常具体信息
NHibernate.Exceptions.GenericADOException : could not execute query
[ select userinfo0_.id as id0_, userinfo0_.name as name2_0_, userinfo0_.description as descript3_0_, userinfo0_.state as state4_0_ from UserInfo userinfo0_ where userinfo0_.name ='testname' ]
[SQL: select userinfo0_.id as id0_, userinfo0_.name as name2_0_, userinfo0_.description as descript3_0_, userinfo0_.state as state4_0_ from UserInfo userinfo0_ where userinfo0_.name ='testname']
----> System.Data.SqlClient.SqlException : Invalid object name 'UserInfo'.
at NHibernate.Loader.Loader.DoList(ISessionImplementor session, QueryParameters queryParameters)
at NHibernate.Loader.Loader.ListIgnoreQueryCache(ISessionImplementor session, QueryParameters queryParameters)
at NHibernate.Loader.Loader.List(ISessionImplementor session, QueryParameters queryParameters, ISet`1 querySpaces, IType[] resultTypes)
at NHibernate.Hql.Ast.ANTLR.Loader.QueryLoader.List(ISessionImplementor session, QueryParameters queryParameters)
at NHibernate.Hql.Ast.ANTLR.QueryTranslatorImpl.List(ISessionImplementor session, QueryParameters queryParameters)
at NHibernate.Engine.Query.HQLQueryPlan.PerformList(QueryParameters queryParameters, ISessionImplementor session, IList results)
at NHibernate.Impl.SessionImpl.List(String query, QueryParameters queryParameters, IList results)
at NHibernate.Impl.SessionImpl.List[T](String query, QueryParameters parameters)
at NHibernate.Impl.QueryImpl.List[T]()
UserInfoDAL.cs(21,0): at NHibernateWCF.DAL.UserInfoDAL.ExistUserInfo(String name)
UserInfoDALTest.cs(18,0): at NHibernateWCF.Test.UserInfoDALTest.ExistUserInfoTest()
--SqlException
at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning()
at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
at System.Data.SqlClient.SqlDataReader.ConsumeMetaData()
at System.Data.SqlClient.SqlDataReader.get_MetaData()
at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)
at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async)
at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result)
at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)
at System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior)
at System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader()
这是NHibernate情况下,当连接数据库不一致的时候出现的堆栈信息。使用ADO.NET或者其他框架可能会由细节上的不同,但总体上应该都是这一类的异常。
解决办法就是修改连接字符串,把配置中连接的数据库改成正确的数据库,使执行sql语句的时候能找到相应的表。