0

이상한 오류를주는 정말 간단한 클래스가 있습니다. 아주 간단하고 다른 테이블과 관계가 없습니다. 가장 이상한 부분은 무작위로 발생하는 것 같지만, 특히 내 웹 사이트에 많은 요청이있을 때 ... 2.01.400 버전 인 Nhibernate를 사용합니다.NHibernate.ADOException : 쿼리를 실행할 수 없습니다 -> System.IndexOutOfRangeException : id13_

그물에 대한 검색이 있었고 동일한 문제가있는 대부분의 사람들이 포럼에서 Nhibernate의 버그라고 말합니다. 누구나 전에 이런 종류의 문제가 있었습니까? 그리고 해결책으로 왔습니까?

데이터베이스 연결에 문제가있을 수 있습니까?

가장 좋은 점은 때로는 발생하기 때문에 웹 사이트가 다운되는 것입니다. IIS 재설정 후 모든 것이 정상적으로 작동하지만 다시 발생할 때를 누가 알 수 있습니다!

내가 갖는 : 그렇지 않으면,

<?xml version="1.0" encoding="utf-8"?> 
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"> 
    <!--Build: with [email protected] Nhibernate template--> 
    <class name="UnipaBelediyeMaster.GelirGenelParametre,UnipaBelediyeMaster" table="GelirGenelParametre" lazy="false" schema="Parametre"> 
    <id name="Id" column="id" type="Decimal"> 
     <generator class="assigned" /> 
    </id> 
    <property name="ParametreAdi" column="ParametreAdi" type="string" not-null="true" /> 
    <property name="KullanimNedeni" column="KullanimNedeni" type="string" not-null="true" /> 
    <property name="Degeri" column="Degeri" type="string" not-null="true" /> 
    </class> 
</hibernate-mapping> 

두 엔티티 및 매핑 클래스가 좋은 것 같다

[Serializable] 
    public class GelirGenelParametre 
    { 
     #region Member Variables 
     protected decimal _id; 
     protected string _parametreadi; 
     protected string _kullanimnedeni; 
     protected string _degeri; 
     #endregion 
     #region Constructors 

     public GelirGenelParametre() {} 

     public GelirGenelParametre(decimal id, string parametreadi, string kullanimnedeni, string degeri) 
     { 
      this._id= id; 
      this._parametreadi= parametreadi; 
      this._kullanimnedeni= kullanimnedeni; 
      this._degeri= degeri; 
     } 

     #endregion 
     #region Public Properties 
     public virtual decimal Id 
     { 
      get { return _id; } 
      set {_id= value; } 
     } 
     public virtual string ParametreAdi 
     { 
      get { return _parametreadi; } 
      set {_parametreadi= value; } 
     } 
     public virtual string KullanimNedeni 
     { 
      get { return _kullanimnedeni; } 
      set {_kullanimnedeni= value; } 
     } 
     public virtual string Degeri 
     { 
      get { return _degeri; } 
      set {_degeri= value; } 
     } 
     #endregion 

및 매핑 XML : 아래

Server Error in '/' Application. 

System.Web.Services.Protocols.SoapException: Server was unable to process request. ---> System.Exception: Unipa Belediye Master Select<T>(string p_sql,bool closeSession) de Sorun Var ---> NHibernate.ADOException: could not execute query 
[ select gelirgenel0_.id as id13_, gelirgenel0_.ParametreAdi as Parametr2_13_, gelirgenel0_.KullanimNedeni as Kullanim3_13_, gelirgenel0_.Degeri as Degeri13_ from Parametre.GelirGenelParametre gelirgenel0_ where (id in(6 , 7 , 62 , 65)) ] 
[SQL: select gelirgenel0_.id as id13_, gelirgenel0_.ParametreAdi as Parametr2_13_, gelirgenel0_.KullanimNedeni as Kullanim3_13_, gelirgenel0_.Degeri as Degeri13_ from Parametre.GelirGenelParametre gelirgenel0_ where (id in(6 , 7 , 62 , 65))] ---> System.IndexOutOfRangeException: id13_ 
    at System.Data.ProviderBase.FieldNameLookup.GetOrdinal(String fieldName) 
    at System.Data.SqlClient.SqlDataReader.GetOrdinal(String name) 
    at NHibernate.Driver.NHybridDataReader.GetOrdinal(String name) 
    at NHibernate.Type.NullableType.NullSafeGet(IDataReader rs, String name) 
    at NHibernate.Type.NullableType.NullSafeGet(IDataReader rs, String[] names, ISessionImplementor session, Object owner) 
    at NHibernate.Loader.Loader.GetKeyFromResultSet(Int32 i, ILoadable persister, Object id, IDataReader rs, ISessionImplementor session) 
    at NHibernate.Loader.Loader.GetRowFromResultSet(IDataReader resultSet, ISessionImplementor session, QueryParameters queryParameters, LockMode[] lockModeArray, EntityKey optionalObjectKey, IList hydratedObjects, EntityKey[] keys, Boolean returnProxies) 
    at NHibernate.Loader.Loader.DoQuery(ISessionImplementor session, QueryParameters queryParameters, Boolean returnProxies) 
    at NHibernate.Loader.Loader.DoQueryAndInitializeNonLazyCollections(ISessionImplementor session, QueryParameters queryParameters, Boolean returnProxies) 
    at NHibernate.Loader.Loader.DoList(ISessionImplementor session, QueryParameters queryParameters) 
    --- End of inner exception stack trace --- 
    at NHibernate.Loader.Loader.DoList(ISessionImplementor session, QueryParameters queryParameters) 
    at NHibernate.Loader.Loader.List(ISessionImplementor session, QueryParameters queryParameters, ISet`1 querySpaces, IType[] resultTypes) 
    at NHibernate.Hql.Classic.QueryTranslator.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]() 
    at UnipaBelediyeMaster.Master.Select[T](String p_sql, Boolean closeSession) in D:\BelediyeNet\Web\Menu.Src\UnipaBelediyeMaster\UnipaBelediyeMasterr\Master.cs:line 449 
    --- End of inner exception stack trace --- 
    at UnipaBelediyeMaster.Master.Select[T](String p_sql, Boolean closeSession) in D:\BelediyeNet\Web\Menu.Src\UnipaBelediyeMaster\UnipaBelediyeMasterr\Master.cs:line 461 
    at Service.GelirGenelParametreAlIdler(String idler) in c:\webServiceBornovaBel\App_Code\Service.cs:line 1044 
    --- End of inner exception stack trace --- 

와 나의 엔티티 클래스 내 웹 사이트는 항상 실패 할 것입니다 ... 그것은 단지 때때로 실패합니다 ...

아이디어가 있으십니까?

답변

0

다른 세션이 활성 상태가 아닌 경우에만 새 최대 절전 모드 세션을 인스턴스화해야합니다. 이것은 세션이 동일한 자원에 대해 경쟁하게되어 교착 상태와 같은 결과를 가져옵니다. 이런 식으로하면 두 번째 세션을 제거하고 첫 번째 세션 자체를 사용하여 데이터베이스를 쿼리하면됩니다.