Ken*_*n D 5 c# linq type-conversion
我试图FirstOrDefault()
对一个对象集进行查询,并抛出一个奇怪的异常:
我的代码:
private RecordObject GetRecordByID(int recID)
{
return _objectSet.FirstOrDefault(rec => rec.ID == recID);
}
Run Code Online (Sandbox Code Playgroud)
例外消息:
输入字符串的格式不正确
InnerException
一片空白.
堆栈跟踪:
at System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal)
at System.Number.ParseDecimal(String value, NumberStyles options, NumberFormatInfo numfmt)
at System.Convert.ToDecimal(String value, IFormatProvider provider)
at System.String.System.IConvertible.ToDecimal(IFormatProvider provider)
at System.Convert.ChangeType(Object value, Type conversionType, IFormatProvider provider)
at Oracle.DataAccess.Client.OracleDataReader.ChangeType(Object sourceValue, Type targetType)
at Oracle.DataAccess.Client.OracleDataReader.GetValue(Int32 i)
at System.Data.Common.Internal.Materialization.Shaper.ErrorHandlingValueReader`1.GetValue(DbDataReader reader, Int32 ordinal)
at System.Data.Common.Internal.Materialization.Shaper.GetPropertyValueWithErrorHandling[TProperty](Int32 ordinal, String propertyName, String typeName)
at lambda_method(Closure , Shaper )
at System.Data.Common.Internal.Materialization.Shaper.HandleEntityAppendOnly[TEntity](Func`2 constructEntityDelegate, EntityKey entityKey, EntitySet entitySet)
at lambda_method(Closure , Shaper )
at System.Data.Common.Internal.Materialization.Coordinator`1.ReadNextElement(Shaper shaper)
at System.Data.Common.Internal.Materialization.Shaper`1.SimpleEnumerator.MoveNext()
at System.Linq.Enumerable.WhereEnumerableIterator`1.MoveNext()
at System.Linq.SystemCore_EnumerableDebugView`1.get_Items()
Run Code Online (Sandbox Code Playgroud)
奇怪的是,我没有进行任何类型的转换.
PS:数据库是Oracle 10g,但由于我使用EF,我想这无所谓,但万一你需要这个细节.
好的,我已经解决了这个问题,如果有人遇到同样的问题,我会保留这个问题。
为了解决这个问题,我需要从数据库中重新导入表,显然,我的 ADO.Net 对象和数据库之间存在一些不兼容的列。
我认为,EF 试图进行强制转换操作来弥补我的错误(留下不兼容的版本),而强制转换是不可能的,这就是类型转换的来源。
谢谢你们。