为什么没有where子句的查询会有输入字符串异常?

时间:2012-10-29 11:07:25

标签: c# mysql linq entity-framework formatexception

使用ASP.NET MVC 2,实体框架,MySQL,VS2010 Ultimate。我已经研究了很长但是用尽了我的代码中的一般输入异常命中的线索。虽然我删除了所有where子句:

var record = (from staff in pmsEntities.ef_staff                          
                           select staff
                           ).FirstOrDefault();
  

[FormatException:输入字符串的格式不正确。]

System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal) +9594283    
System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info) +119    
System.String.System.IConvertible.ToInt32(IFormatProvider provider) +46    
System.Convert.ChangeType(Object value, Type conversionType, IFormatProvider provider) +385   
MySql.Data.Entity.EFMySqlDataReader.ChangeType(Object sourceValue, Type targetType) +566    
MySql.Data.Entity.EFMySqlDataReader.GetValue(Int32 ordinal) +231    
System.Data.Common.Internal.Materialization.ErrorHandlingValueReader`1.GetValue(DbDataReader reader, Int32 ordinal) +215    
System.Data.Common.Internal.Materialization.Shaper.GetPropertyValueWithErrorHandling(Int32 ordinal, String propertyName, String typeName) +68    
lambda_method(Closure , Shaper ) +1088    
System.Data.Common.Internal.Materialization.Shaper.HandleEntityAppendOnly(Func`2 constructEntityDelegate, EntityKey entityKey, EntitySet entitySet) +218    
lambda_method(Closure , Shaper ) +291    
System.Data.Common.Internal.Materialization.Coordinator`1.ReadNextElement(Shaper shaper) +170    
System.Data.Common.Internal.Materialization.SimpleEnumerator.MoveNext()  +84    
System.Linq.Enumerable.FirstOrDefault(IEnumerable`1 source) +4187840    
System.Data.Objects.ELinq.ObjectQueryProvider.<GetElementFunction>b__1(IEnumerable`1 sequence) +41    
System.Data.Objects.ELinq.ObjectQueryProvider.ExecuteSingle(IEnumerable`1 query, Expression queryRoot) +59    
System.Data.Objects.ELinq.ObjectQueryProvider.System.Linq.IQueryProvider.Execute(Expression expression) +150    
System.Linq.Queryable.FirstOrDefault(IQueryable`1 source) +265    
IDP.Models.Login.IsValid(String _username, String _pwd, Int32 _type) in C:\Users\george\Desktop\Um\idp\nur\IDP\IDP\Models\Login.cs:36

1 个答案:

答案 0 :(得分:3)

堆栈跟踪的这些部分:

MySql.Data.Entity.EFMySqlDataReader.ChangeType(Object sourceValue, Type targetType) +566    
MySql.Data.Entity.EFMySqlDataReader.GetValue(Int32 ordinal) +231    
System.Data.Common.Internal.Materialization.ErrorHandlingValueReader`1.GetValue(DbDataReader reader, Int32 ordinal) +215    
System.Data.Common.Internal.Materialization.Shaper.GetPropertyValueWithErrorHandling(Int32 ordinal, String propertyName, String typeName) +68    
lambda_method(Closure , Shaper ) +1088    
System.Data.Common.Internal.Materialization.Shaper.HandleEntityAppendOnly(Func`2 constructEntityDelegate, EntityKey entityKey, EntitySet entitySet) +218    
lambda_method(Closure , Shaper ) +291

建议MySQL Linq提供商在您的某些数据上遇到问题 - 如果您的对象模型中的某个字段被定义为int,但相应的< strong>数据库中的数据未表示为整数。

在不了解您的数据库以及如何设置实体框架模型的情况下,我无法确切地说出问题所在。