- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们时不时会遇到这个非常奇怪的错误
NHibernate.ADOException: could not execute query
[ SELECT this_.Id as Id37_0_, this_.AREA_ID as AREA2_37_0_, this_.BAT_CHK as BAT3_37_0_, this_.BAT_COD as BAT4_37_0_, this_.BBEACT as BBEACT37_0_, this_.CREDATE as CREDATE37_0_, this_.DEST_LOC as DEST7_37_0_, this_.DOCNR as DOCNR37_0_, this_.DOCTYPE as DOCTYPE37_0_, this_.DUTY_STATUS as DUTY10_37_0_, this_.EAN as EAN37_0_, this_.EXCEPTION_REASON as EXCEPTION12_37_0_, this_.ERROR_TEXT as ERROR13_37_0_, this_.FLOWTYPE as FLOWTYPE37_0_, this_.GOODS_STATUS as GOODS15_37_0_, this_.INSERT_DATETIME as INSERT16_37_0_, this_.MATNR as MATNR37_0_, this_.MVTTYPE as MVTTYPE37_0_, this_.ORDNR as ORDNR37_0_, this_.PACK_ID as PACK20_37_0_, this_.PALNR as PALNR37_0_, this_.PRDACT as PRDACT37_0_, this_.QTYLOAD as QTYLOAD37_0_, this_.SCANNR as SCANNR37_0_, this_.SEQ as SEQ37_0_, this_.SOURCE_LOC as SOURCE26_37_0_, this_.STATUS as STATUS37_0_, this_.TEXT as TEXT37_0_, this_.USER_ID as USER29_37_0_, this_.WH_ID as WH30_37_0_ FROM ZZHTR_RCV this_ WHERE this_.DOCNR = ? and this_.ORDNR = ? and this_.MVTTYPE = ? and this_.WH_ID = ? ]
Positional parameters: #0>10972365/O #0>1300196311 #0>O #0>NL02
[SQL: <same as above>]
---> System.IndexOutOfRangeException: Id37_0_
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, IEntityPersister 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.ListIgnoreQueryCache(ISessionImplementor session, QueryParameters queryParameters)
at NHibernate.Loader.Loader.List(ISessionImplementor session, QueryParameters queryParameters, ISet1 querySpaces, IType[] resultTypes)
at NHibernate.Loader.Criteria.CriteriaLoader.List(ISessionImplementor session)
at NHibernate.Impl.SessionImpl.List(CriteriaImpl criteria, IList results)
at NHibernate.Impl.CriteriaImpl.List(IList results)
at NHibernate.Impl.CriteriaImpl.List[T]()
at Rhino.Commons.RepositoryImplBase1.FindAll(DetachedCriteria criteria, Order[] orders)
at Rhino.Commons.Repository1.FindAll(DetachedCriteria criteria, Order[] orders)
问题是这个错误并不是每次都出现。我看到它是 Id 列,但不明白为什么它在那里有问题。我很确定映射没问题
映射:
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
assembly="XX.Business"
namespace="XX.Business"
default-lazy="true">
<class name="XX.Business.Receive, XX.Business" table="ZZHTR_RCV" lazy="true">
<id name="Id" type="int">
<generator class="identity" />
</id>
<property name="AreaCode" column="AREA_ID"/>
<property name="BatchCheck" column="BAT_CHK"/>
<property name="BatchCode" column="BAT_COD"/>
<property name="BbeAct" column="BBEACT"/>
<property name="CreationDate" column="CREDATE" not-null="true"/>
<property name="DestinationLocation" column="DEST_LOC"/>
<property name="DocNr" column="DOCNR"/>
<property name="DocType" column="DOCTYPE"/>
<property name="DutyStatus" column="DUTY_STATUS"/>
<property name="Ean" column="EAN"/>
<property name="ExceptionReason" column="EXCEPTION_REASON"/>
<property name="ErrorText" column="ERROR_TEXT"/>
<property name="FlowType" column="FLOWTYPE"/>
<property name="GoodsStatus" column="GOODS_STATUS"/>
<property name="InsertDateTime" column="INSERT_DATETIME" not-null="true"/>
<property name="MaterialNr" column="MATNR"/>
<property name="MovementType" column="MVTTYPE"/>
<property name="OrderNr" column="ORDNR"/>
<property name="ManufacturingBatch" column="PACK_ID"/>
<property name="PalletNr" column="PALNR"/>
<property name="ProdAct" column="PRDACT"/>
<property name="QuantityLoad" column="QTYLOAD"/>
<property name="ScanNr" column="SCANNR"/>
<property name="Sequence" column="SEQ"/>
<property name="SourceLocation" column="SOURCE_LOC"/>
<property name="Status" column="STATUS"/>
<property name="Text" column="TEXT"/>
<property name="UserId" column="USER_ID"/>
<property name="WarehouseCode" column="WH_ID"/>
</class>
</hibernate-mapping>
类:
[XmlRoot("ZZHTR_RCV")]
public class Receive : DomainObject
{
[XmlElement("AREA_ID")]
public virtual string AreaCode { get; set; }
[XmlElement("BAT_CHK")]
public virtual string BatchCheck { get; set; }
[XmlElement("BAT_COD")]
public virtual string BatchCode { get; set; }
[XmlElement("BBEACT")]
public virtual DateTime? BbeAct { get; set; }
[XmlElement("CREDATE")]
public virtual DateTime CreationDate { get; set; }
[XmlElement("DEST_LOC")]
public virtual string DestinationLocation { get; set; }
[XmlElement("DOCNR")]
public virtual string DocNr { get; set; }
[XmlElement("DOCTYPE")]
public virtual string DocType { get; set; }
[XmlElement("DUTY_STATUS")]
public virtual DutyStatus DutyStatus { get; set; }
[XmlElement("EAN")]
public virtual string Ean { get; set; }
[XmlElement("ERROR_TEXT")]
public virtual string ErrorText { get; set; }
[XmlElement("FLOWTYPE")]
public virtual string FlowType { get; set; }
[XmlElement("GOODS_STATUS")]
public virtual GoodsStatus GoodsStatus { get; set; }
[XmlElement("INSERT_DATETIME")]
public virtual DateTime InsertDateTime { get; set; }
[XmlElement("MATNR")]
public virtual string MaterialNr { get; set; }
[XmlElement("MVTTYPE")]
public virtual string MovementType { get; set; }
[XmlElement("ORDNR")]
public virtual string OrderNr { get; set; }
[XmlElement("PACK_ID")]
public virtual string ManufacturingBatch { get; set; }
[XmlElement("PALNR")]
public virtual string PalletNr { get; set; }
[XmlElement("PRDACT")]
public virtual DateTime? ProdAct { get; set; }
[XmlElement("QTYLOAD")]
public virtual int QuantityLoad { get; set; }
[XmlElement("SCANNR")]
public virtual string ScanNr { get; set; }
[XmlElement("SEQ")]
public virtual int Sequence { get; set; }
[XmlElement("SOURCE_LOC")]
public virtual string SourceLocation { get; set; }
[XmlElement("STATUS")]
public virtual MobileProcessingStatus Status { get; set; }
[XmlElement("TEXT")]
public virtual string Text { get; set; }
[XmlElement("USER_ID")]
public virtual string UserId { get; set; }
[XmlElement("WH_ID")]
public virtual string WarehouseCode { get; set; }
[XmlElement("EXCEPTION_REASON")]
public virtual ExceptionReason ExceptionReason { get; set; }
public virtual string Prodline
{
get
{
if(string.IsNullOrEmpty(this.PalletNr) || !this.PalletNr.Length.Equals(18))
{
return "000";
}
else
{
return this.PalletNr.Substring(8, 3);
}
}
}
public virtual string EERPProcessOrder { get; set; }
}
Id继承自DomainObject:
public abstract class DomainObject:IDomainObject
{
[DataMember]
public virtual int Id { get; set; }
表格:
[Id] [int] IDENTITY(1,1) NOT NULL,
[AREA_ID] [nvarchar](255) NOT NULL,
[BAT_CHK] [nvarchar](255) NULL,
[BAT_COD] [nvarchar](255) NULL,
[BBEACT] [datetime] NULL,
[CREDATE] [datetime] NOT NULL,
[DEST_LOC] [nvarchar](255) NULL,
[DOCNR] [nvarchar](255) NOT NULL,
[DOCTYPE] [nchar](2) NOT NULL,
[DUTY_STATUS] [int] NOT NULL,
[EAN] [nvarchar](255) NOT NULL,
[ERROR_TEXT] [nvarchar](255) NULL,
[EXCEPTION_REASON] [int] NULL,
[FLOWTYPE] [nvarchar](255) NULL,
[GOODS_STATUS] [int] NOT NULL,
[INSERT_DATETIME] [datetime] NOT NULL,
[MATNR] [nvarchar](255) NOT NULL,
[MVTTYPE] [nchar](1) NOT NULL,
[ORDNR] [nvarchar](255) NOT NULL,
[PACK_ID] [nvarchar](255) NULL,
[PALNR] [nvarchar](255) NOT NULL,
[PRDACT] [datetime] NULL,
[QTYLOAD] [int] NOT NULL,
[SCANNR] [nvarchar](255) NOT NULL,
[SEQ] [int] NOT NULL,
[SOURCE_LOC] [nvarchar](255) NULL,
[STATUS] [int] NOT NULL,
[TEXT] [nvarchar](255) NULL,
[USER_ID] [nvarchar](255) NOT NULL,
[WH_ID] [nvarchar](255) NOT NULL,
有人可以帮忙吗?
最佳答案
我们和其他人也遇到过这个问题。这似乎与多线程访问非线程安全的SqlConnection
有关。以下很长的帖子包含更多示例和有关该问题的更多详细信息:SQLDataReader.GetOrdinal() fails rarely with IndexOutOfRange . bbzippo 指出:
It's evident that SqlDataReader reads a result set left over from the previous query executed on the same connection a couple of seconds ago.
不幸的是,我还没有找到任何真正的解释来解释为什么这个异常会突然出现在已经正常运行了一段时间的代码中。
在给定线程中提出的一些建议是:
"Data Source=Sql2005;Initial Catalog=MyDbName;User Id=MyLogin;Password=MyPass;Pooling=false"
(这很可能会影响您的应用程序的性能,但肯定工作)SqlConnection
实例的所有 static
代码重构为 non-static
SqlConnection
的可能的多线程访问(这可能不是那么容易...)我仍在尝试在我们的应用程序中找到错误的根源,但这并不容易,因为我无法在我们的实际环境之外重现它。 Matt Neerincx [MSFT] suggests in one of his answers在上面提到的帖子中使用不同的连接字符串,从而为应用程序的不同部分使用不同的连接池,以帮助缩小问题的根源。
我在休眠论坛上发现了关于此问题的另一篇文章:https://forum.hibernate.org/viewtopic.php?p=2386963 ,其中一位海报在多线程场景中也存在延迟加载问题。
希望这会引导任何人朝着正确的方向进行修复。
关于Nhibernate FieldNameLookup 抛出 IndexOutOfRangeException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2590893/
我想在文本框中显示数据库中的某些列。运行代码时,@ApplicantUsername出现错误 IndexOutOfRangeException 这是我的代码: cs.Open();
我基本上需要将任意数量的内容数组存储为一个整数,但之后我必须将其全部回显。 我收到索引超出范围错误。 for (int index = 0; index 0; index--, userArray-
当我尝试访问特定数组索引时,我正在寻找一种方法来防止 IndexOutOfRangeException。 我有一个通用代码,有时在 array[index] 中有值,有时则没有。 所以,在尝试获取它的
我不知道为什么:float val = spectrum[i];正在产生超出数组范围的索引。请帮忙...!我是这个游戏的新手。 public class InputScript : MonoBehav
我正在编写一个 Unity 脚本来读取 CSV 文件(二维和所有数字),将其分解为附加到二维 float 组的 float 。这是我的代码: using System.Collections; usi
这个问题在这里已经有了答案: What does IndexOutofRangeException mean? (3 个答案) 关闭 9 年前。 string Query = "SELECT [AA
我不明白为什么我会在下面的代码中遇到超出范围的异常。 _maxRowIndex 和 _maxColIndex 的值分别为 5 和 0。当 row 和 col 都等于 0 时,第一次抛出异常。我不明白为
程序在运行时说索引超出范围,但我不知道为什么。 错误信息指出的行是 点[计数器 + ((int)(radius * 100))].X = i; 如果那个有错误,下一个(具有相同索引)也一定有错误。 P
这个问题在这里已经有了答案: C# Creating an array of arrays (5 个答案) 关闭 7 年前。 我遇到了这个奇怪的 IndexOutOfRangeException 异
我正在制作一个简单的购物车。它从另一个页面上的按钮将产品添加到购物车页面,我的添加到购物车按钮如下所示 protected void addCart_Click(object sender, Eve
我不明白为什么我在下面的 Where 子句中得到它。 using System; using System.Linq; public static class Extensions { ///
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎是题外话,因为它缺乏足够的信息来诊断问题。 更详细地描述您的问题或include a min
我有一个问题。我尝试实现 Zig-Zag 算法 ( Rail Fence )。 我的代码如下所示: int n = 3; int j = 0; int charCounter
在 Form1 构造函数中我有: if (System.IO.File.Exists(keywords_path_file)) { ListBo
我在一些任务中使用字典。 从逻辑上讲,我已将其设置为我的键永远不会发生冲突,但有时在我向字典添加内容时会出现此异常。 Index was outside the bounds of the array
我们目前在我们的一个应用程序中使用 SpreadsheetGear 来生成 Excel 工作簿。我试图在 ASP.NET Web 应用程序中重用其中的一些功能,但到目前为止我很难过。 我首先在 Web
我有以下映射: public class SecurityMap : ClassMap { public SecurityMap() {
我有一个非常简单的类,给出了一个奇怪的错误。该类只有1个属性,查询非常简单。最可怕的是,这似乎是随机发生的。收到此错误后,通常刷新页面可以使其变路,并且应用程序不会再出现此错误。 数据库连接可能有问题
我又遇到了另一个问题。我试图使用 DataReader 从数据库中获取数据,但在测试代码时出现错误。谁能帮我吗?错误发生在这一行: chkAssess = readAssess[columnName]
我还有另外两个按钮,代码几乎完全相同。但是,当我尝试运行此代码以获取所有结果时,出现错误“System.IndexOutOfRangeException”。 显示无效 NHS 号码按钮有效,但我不明白
我是一名优秀的程序员,十分优秀!