+-
Entity Framework 6.1.3:运行几天后出现InvalidOperationException
bounty到期在6天内。该问题的答案有资格获得 + 50声望赏金。 user3151766正在寻找 来自信誉良好的来源的答案

我有一个奇怪的问题。我有Windows服务。服务可以在100多台计算机上正常运行。但是在几天(甚至一个月)后的其中一些情况下,它开始引发如下异常:

System.InvalidOperationException:无法将'Y'的'X'属性设置为'System.String'值。您必须将此属性设置为'System.Int32'类型的非空值。

在System.Data.Entity.Core.Common.Internal.Materialization.Shaper.ErrorHandlingValueReader`1.GetValue(DbDataReader reader,Int32序号)中在System.Data.Entity.Core.Common.Internal.Materialization.Shaper.GetPropertyValueWithErrorHandling [TProperty](Int32序数,字符串propertyName,字符串typeName)中在lambda_method(Closure,Shaper)中在System.Data.Entity.Core.Common.Internal.Materialization.Shaper.HandleEntityAppendOnly [TEntity](Func`2 ConstructionDelegate,EntityKey实体密钥,EntitySet实体集合)中在lambda_method(Closure,Shaper)中在System.Data.Entity.Core.Common.Internal.Materialization.Coordinator`1.ReadNextElement(Shaper shaper)中在System.Data.Entity.Core.Common.Internal.Materialization.Shaper`1.SimpleEnumerator.MoveNext()中在System.Linq.Enumerable.FirstOrDefault [TSource]中(IEnumerable`1源)在System.Linq.Queryable.FirstOrDefault [TSource](IQueryable`1源)

数据库结构中的代码没有任何修改。在一些地方抛出异常。其他应用程序(不是Windows服务)可以在同一数据库上正常运行。由于我可以检查一些查询是否运行正常,因此只有少数查询抛出此异常。类型多种。有时它不能从字符串转换为int32,有时(在其他查询中)不能将int32转换为字符串。

要解决该问题,我们必须重新启动Windows服务。

我的记忆没有任何问题(我的第一个怀疑者)。服务使用大约100-150MB的内存。

环境:Framework 4.0,EF 6.1.3、64位,SQL Server 2012 Express。

0
投票

System.InvalidOperationException:无法将'Y'的'X'属性设置为'System.String'值。您必须将此属性设置为'System.Int32'类型的非空值。

值的类型似乎彼此不对应,例如int => byte。例如,如果您使用的是enum,但其值为int,则应更改byte的类型,如下所示:

enum

希望这有帮助...