Telerik Open Access error: Exception: System.ArgumentNullException: Value cannot be null. Parameter name: converterName
Telerik Open Access error: Exception: System.ArgumentNullException: Value cannot be null. Parameter name: converterName
我目前遇到的问题是,对通过 Telerik Open Access (v2015.1.87.3777) 连接的存储过程的一些查询返回以下错误:
Exception: System.ArgumentNullException: Value cannot be null. Parameter name: converterName.
错误发生在.rlinq设计器动态生成的嵌入式.cs文件中执行存储过程的时候。例如,
IEnumerable<TestResult> queryResult = this.ExecuteQuery<TestResult>("[TestSchema].[spS_GetTestResult]", CommandType.StoredProcedure, parameterContextID, parameterReturnValue);
然而,这只发生在某些环境中,而不是其他环境中,具有看似完全相同的配置。这是昨晚才开始发生的,没有更改代码。在昨天之前,一切都运行良好。
我可以在本地重现问题,如果我在本地 运行 解决方案并指向我知道可以正常工作的数据库服务器,那么一切都很好。但是,如果我更改连接字符串并指向另一个我知道不起作用的服务器,则会收到错误消息。所以底层代码是完全一样的(假设我在本地 运行ning 它)唯一改变的是连接字符串。它正在调用相同的存储过程——事实上,整个数据库是另一个有效数据库的克隆。
我尝试回滚到以前版本的 Telerik Open Access,但没有任何效果。我完全不知道是什么导致了这种情况,也没有解释为什么会出现这种情况,特别是为什么它在某些环境中有效,而在其他环境中无效。
这是异常的详细信息。
System.ArgumentNullException was unhandled by user code
HResult=-2147467261
Message=Value cannot be null. Parameter name: converterName
Source=Telerik.OpenAccess.Runtime
ParamName=converterName
StackTrace:
at OpenAccessRuntime.Relational.metadata.RelationalMappingResolver.ResolveTypeConverterName(TypeConverterName
converterName)
at OpenAccessRuntime.Relational.metadata.RelationalMappingResolver.CreateConverter(TypeConverterName
converterName)
at OpenAccessRuntime.DataReaderTypeConverterImpl.Setup(Int32 offset, Type targetType)
at OpenAccessRuntime.DataReaderTypeConverterImpl.Convert(Type targetType, Int32 offset)
at Telerik.OpenAccess.Data.Common.OADataReader.GetConvertedValue[T](Int32
columnIndex)
at Telerik.OpenAccess.Data.Common.PropertyAccessor.Impl`2.Set(Object
inst, OADataReader reader, Int32 columnIndex)
at Telerik.OpenAccess.Data.Common.NonPersistentCapableMaterializer 1.d__0.MoveNext()
at Telerik.OpenAccess.RT.TypedEnumerator 1.MoveNext()
at System.Collections.Generic.List 1..ctor(IEnumerable 1 collection)
at Telerik.OpenAccess.OpenAccessContextBase.ExecuteQuery[T](String
commandText, CommandType commandType, DbParameter[] parameters)
at TestProject.ORM.PresentationData.GetTestResult(Nullable 1 contextID, Int32& returnValue) in
c:\Projects...\DataModels\PresentationData1.cs:line 1789
at TestProject.ORM.PresentationData.GetTestResult(Nullable 1 contextID) in c:\Projects...\DataModels\PresentationData1.cs:line 1768
at TestProject.ORM.DataHelpers.Presentation.GetTestResult(Int32 contextId) in c:\Projects...\DataHelpers\Presentation.cs:line 229
at TestProject.DataServices.PresentationService.GetTestResult(Int32
contextId) in c:\Projects...\PresentationService.svc.cs:line 404
at SyncInvokeGetTestResult(Object , Object[] , Object[] )
at System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke(Object
instance, Object[] inputs, Object[]& outputs)
at System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc&
rpc)
InnerException:
这是由于在上述服务器上推出了安全更新。回滚这些补丁解决了这个问题:两个安全更新是:
- KB3194719 (SQL)
- KB3197873 (Windows)
我目前遇到的问题是,对通过 Telerik Open Access (v2015.1.87.3777) 连接的存储过程的一些查询返回以下错误:
Exception: System.ArgumentNullException: Value cannot be null. Parameter name: converterName.
错误发生在.rlinq设计器动态生成的嵌入式.cs文件中执行存储过程的时候。例如,
IEnumerable<TestResult> queryResult = this.ExecuteQuery<TestResult>("[TestSchema].[spS_GetTestResult]", CommandType.StoredProcedure, parameterContextID, parameterReturnValue);
然而,这只发生在某些环境中,而不是其他环境中,具有看似完全相同的配置。这是昨晚才开始发生的,没有更改代码。在昨天之前,一切都运行良好。
我可以在本地重现问题,如果我在本地 运行 解决方案并指向我知道可以正常工作的数据库服务器,那么一切都很好。但是,如果我更改连接字符串并指向另一个我知道不起作用的服务器,则会收到错误消息。所以底层代码是完全一样的(假设我在本地 运行ning 它)唯一改变的是连接字符串。它正在调用相同的存储过程——事实上,整个数据库是另一个有效数据库的克隆。
我尝试回滚到以前版本的 Telerik Open Access,但没有任何效果。我完全不知道是什么导致了这种情况,也没有解释为什么会出现这种情况,特别是为什么它在某些环境中有效,而在其他环境中无效。
这是异常的详细信息。
System.ArgumentNullException was unhandled by user code HResult=-2147467261 Message=Value cannot be null. Parameter name: converterName Source=Telerik.OpenAccess.Runtime ParamName=converterName StackTrace: at OpenAccessRuntime.Relational.metadata.RelationalMappingResolver.ResolveTypeConverterName(TypeConverterName converterName) at OpenAccessRuntime.Relational.metadata.RelationalMappingResolver.CreateConverter(TypeConverterName converterName) at OpenAccessRuntime.DataReaderTypeConverterImpl.Setup(Int32 offset, Type targetType) at OpenAccessRuntime.DataReaderTypeConverterImpl.Convert(Type targetType, Int32 offset) at Telerik.OpenAccess.Data.Common.OADataReader.GetConvertedValue[T](Int32 columnIndex) at Telerik.OpenAccess.Data.Common.PropertyAccessor.Impl`2.Set(Object inst, OADataReader reader, Int32 columnIndex) at Telerik.OpenAccess.Data.Common.NonPersistentCapableMaterializer 1.d__0.MoveNext() at Telerik.OpenAccess.RT.TypedEnumerator 1.MoveNext() at System.Collections.Generic.List 1..ctor(IEnumerable 1 collection) at Telerik.OpenAccess.OpenAccessContextBase.ExecuteQuery[T](String commandText, CommandType commandType, DbParameter[] parameters) at TestProject.ORM.PresentationData.GetTestResult(Nullable 1 contextID, Int32& returnValue) in c:\Projects...\DataModels\PresentationData1.cs:line 1789 at TestProject.ORM.PresentationData.GetTestResult(Nullable 1 contextID) in c:\Projects...\DataModels\PresentationData1.cs:line 1768 at TestProject.ORM.DataHelpers.Presentation.GetTestResult(Int32 contextId) in c:\Projects...\DataHelpers\Presentation.cs:line 229 at TestProject.DataServices.PresentationService.GetTestResult(Int32 contextId) in c:\Projects...\PresentationService.svc.cs:line 404 at SyncInvokeGetTestResult(Object , Object[] , Object[] ) at System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke(Object instance, Object[] inputs, Object[]& outputs) at System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc& rpc) InnerException:
这是由于在上述服务器上推出了安全更新。回滚这些补丁解决了这个问题:两个安全更新是:
- KB3194719 (SQL)
- KB3197873 (Windows)