【问题标题】:InvalidOperationException for executing LINQ query执行 LINQ 查询的 InvalidOperationException
【发布时间】:2011-11-09 14:47:28
【问题描述】:
'Initialize The Database Connection'

Dim dbTRCoreDatabase As New TRCoreDatabase

'Query For Get The Employee ID'
Dim listEmployeeID As IQueryable(Of Long) = (From EmpMaster In dbTRCoreDatabase.EmployeeMasters Where EmpMaster.Email = Session("gUserName") Select EmpMaster.EmployeeID)

MsgBox(listEmployeeID(0).ToString)

当我执行这个查询时,我有以下错误。

System.InvalidOperationException:在执行过程中发生异常 ' Extent<TR_Portal_Homecare.EmployeeMaster>.Where(EmpMaster => Convert(CompareObjectEqual(Convert(EmpMaster.Email), value(ASP.activeplacement_aspx).Session.get_Item("gUserName"), False))).Select(EmpMaster => EmpMaster.EmployeeID)' 的执行。看 InnerException 了解更多详情。 ---> System.InvalidCastException: 无法转换类型的对象 'Telerik.OpenAccess.Query.MethodCallTransformation' 输入 'OpenAccessRuntime.DataObjects.query.Node'。在 Telerik.OpenAccess.Query.ExpressionCompiler.PerformDatabaseQueryImpl(类型 type, Int32 elementAt, Object[] groupResolutionParamValues, Boolean 单)在 Telerik.OpenAccess.Query.ExpressionCompiler.PerformDatabaseQuery(类型 type, Int32 elementAt, Object[] groupResolutionParamValues, Boolean 单)---内部异常堆栈跟踪结束---在 Telerik.OpenAccess.Query.ExpressionCompiler.PerformDatabaseQuery(类型 type, Int32 elementAt, Object[] groupResolutionParamValues, Boolean 单)在 Telerik.OpenAccess.Query.ExpressionExecution.PerformDatabaseQuerySingle[TResult,T](Piece`1 片,Int32& 发现,Int32 elemAt,布尔单)在 Telerik.OpenAccess.Query.ExpressionExecution.PerformQuerySingle[T,TResult](Piece`1 片,表达式表达式)在 Telerik.OpenAccess.Query.Piece`1.System.Linq.IQueryProvider.Execute[TResult](表达式 expr) 在 System.Linq.Queryable.ElementAtOrDefault[TSource](IQueryable`1 源, Int32 索引)在 TR_Portal_Homecare.ActivePlacement.Page_Load(Object 发件人,EventArgs e) 在 E:\Palanikumar\Project\Today\TRCorePortal\TR_Portal_Homecare\ActivePlacement.aspx.vb:line 12

【问题讨论】:

    标签: .net vb.net linq exception-handling


    【解决方案1】:

    我认为,错误在于您的 where 子句。检查EmpMaster.EmailSession("gUserName") 的类型是否相同。我相信他们不是。

    【讨论】:

    • 谢谢先生。但是会话(“gUsertName”)返回电子邮件 ID 的字符串值。如果我将 Session(“gUserName”)的值存储在字符串变量中,然后我分配给 Linq 查询它会工作,但分配它会抛出异常的直接会话对象。对不起我的英语。
    • 指向我的错误是System.InvalidCastException: Unable to cast object of type 'Telerik.OpenAccess.Query.MethodCallTransformation' to type 'OpenAccessRuntime.DataObjects.query.Node'
    • 我不熟悉telerik扩展,但是dbTRCoreDatabase.EmployeeMasters返回什么?是IEnumerable吗?
    • dbTRCoreDatabase 是 Telerik Open Access 的对象。dbTRCoreDatabase.EmployeeMasters 将表作为对象返回。
    • 我相信dbTRCoreDatabase.EmployeeMasters 不会返回 IEnumerable/IQueryable,但不是很确定。您可以在查询中尝试dbTRCoreDatabase.EmployeeMasters.AsEnumerable() 吗?
    猜你喜欢
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-02
    • 1970-01-01
    相关资源
    最近更新 更多