Queryable method call expected
От: senglory  
Дата: 11.03.10 23:44
Оценка: 80 (1)
Public Class GroupCalendarDBManager
    Inherits DbManager

    Public Sub New()

    End Sub

    Public Sub New(ByVal dataProvider As BLToolkit.Data.DataProvider.DataProviderBase, ByVal connectionString As String)
        MyBase.New(dataProvider, connectionString)
    End Sub

    Public ReadOnly Property Appointments() As Table(Of GroupCalendarDataModel.Appointment)
        Get
            Return GetTable(Of GroupCalendarDataModel.Appointment)()
        End Get
    End Property

    Public ReadOnly Property GroupCalendars() As Table(Of GroupCalendarDataModel.GroupCalendar)
        Get
            Return GetTable(Of GroupCalendarDataModel.GroupCalendar)()
        End Get
    End Property

    Public ReadOnly Property Users() As Table(Of GroupCalendarDataModel.User)
        Get
            Return GetTable(Of GroupCalendarDataModel.User)()
        End Get
    End Property

    Public ReadOnly Property User_GroupCalendars() As Table(Of GroupCalendarDataModel.User_GroupCalendar)
        Get
            Return GetTable(Of GroupCalendarDataModel.User_GroupCalendar)()
        End Get
    End Property

............
    Public Function GetDefaultCalendarIDForUserByName(ByVal sUN As String) As Integer
        Dim cc = From gc In GroupCalendars.AsQueryable() _
                 From u In Users.AsQueryable() _
                 From ugc In User_GroupCalendars.AsQueryable() _
                 Where ugc.UserID = u.ObjectID AndAlso ugc.GroupCalendarID = gc.ObjectID AndAlso u.UserName.ToUpper = sUN.ToUpper AndAlso ugc.IsDefaultCalendar = True _
                 Select gc
        Dim cc2 = cc.Single()
        Return cc2.ObjectID
    End Function


На жирной строке получаю исключение:


03/11/2010 15:42 — System.ArgumentException: Queryable method call expected. Got 'Convert(Convert(value(BusinessLogic.GroupCalendarDBManager).Users).AsQueryable())'.
Parameter name: info
at BLToolkit.Data.Linq.ExpressionParser`1.ParseSequenceInternal(ParseInfo info)
at BLToolkit.Data.Linq.ExpressionParser`1.ParseSequence(ParseInfo info)
at BLToolkit.Data.Linq.ExpressionParser`1.ParseSelectMany(LambdaInfo collectionSelector, LambdaInfo resultSelector, QuerySource source)
at BLToolkit.Data.Linq.ExpressionParser`1.<>c__DisplayClass79.<ParseSequenceInternal>b__1e(LambdaInfo l1, LambdaInfo l2)
at BLToolkit.Data.Linq.ParseInfoExtension.IsQueryableMethod(ParseInfo`1 pi, String methodName, Int32 nparams1, Int32 nparams2, Action`1 seq, Action`2 parms)
at BLToolkit.Data.Linq.ExpressionParser`1.<>c__DisplayClass79.<ParseSequenceInternal>b__1c(ParseInfo`1 pi)
at BLToolkit.Data.Linq.ParseInfo`1.Match(Func`2[] matches)
at BLToolkit.Data.Linq.ExpressionParser`1.ParseSequenceInternal(ParseInfo info)
at BLToolkit.Data.Linq.ExpressionParser`1.ParseSequence(ParseInfo info)
at BLToolkit.Data.Linq.ExpressionParser`1.<>c__DisplayClass79.<ParseSequenceInternal>b__1d(ParseInfo seq)
at BLToolkit.Data.Linq.ParseInfoExtension.IsQueryableMethod(ParseInfo`1 pi, String methodName, Int32 nparams1, Int32 nparams2, Action`1 seq, Action`2 parms)
at BLToolkit.Data.Linq.ExpressionParser`1.<>c__DisplayClass79.<ParseSequenceInternal>b__1c(ParseInfo`1 pi)
at BLToolkit.Data.Linq.ParseInfo`1.Match(Func`2[] matches)
at BLToolkit.Data.Linq.ExpressionParser`1.ParseSequenceInternal(ParseInfo info)
at BLToolkit.Data.Linq.ExpressionParser`1.ParseSequence(ParseInfo info)
at BLToolkit.Data.Linq.ExpressionParser`1.<>c__DisplayClass79.<>c__DisplayClass7d.<ParseSequenceInternal>b__1b(ParseInfo seq, LambdaInfo l)
at BLToolkit.Data.Linq.ParseInfoExtension.<>c__DisplayClass5.<IsQueryableMethod>b__2(LambdaInfo p)
at BLToolkit.Data.Linq.ParseInfo.<>c__DisplayClass1b.<CheckIfLambda>b__18(ParseInfo body)
at BLToolkit.Data.Linq.ParseInfo.IsLambda[T](Func`2[] parameters, Func`2 body, Func`2 func)
at BLToolkit.Data.Linq.ParseInfo.CheckIfLambda(Int32 nparms, Func`2 lambda)
at BLToolkit.Data.Linq.ParseInfoExtension.<>c__DisplayClass5.<IsQueryableMethod>b__1(ParseInfo l)
at BLToolkit.Data.Linq.ParseInfoExtension.IsMethod(ParseInfo`1 pi, Type declaringType, String methodName, Func`2[] args, Func`2 func)
at BLToolkit.Data.Linq.ParseInfoExtension.IsQueryableMethod(ParseInfo`1 pi, Func`3 lambda)
at BLToolkit.Data.Linq.ExpressionParser`1.<>c__DisplayClass79.<ParseSequenceInternal>b__1a(ParseInfo`1 pi)
at BLToolkit.Data.Linq.ParseInfo`1.Match(Func`2[] matches)
at BLToolkit.Data.Linq.ExpressionParser`1.ParseSequenceInternal(ParseInfo info)
at BLToolkit.Data.Linq.ExpressionParser`1.ParseSequence(ParseInfo info)
at BLToolkit.Data.Linq.ExpressionParser`1.<>c__DisplayClass79.<>c__DisplayClass7d.<ParseSequenceInternal>b__1b(ParseInfo seq, LambdaInfo l)
at BLToolkit.Data.Linq.ParseInfoExtension.<>c__DisplayClass5.<IsQueryableMethod>b__2(LambdaInfo p)
at BLToolkit.Data.Linq.ParseInfo.<>c__DisplayClass1b.<CheckIfLambda>b__18(ParseInfo body)
at BLToolkit.Data.Linq.ParseInfo.IsLambda[T](Func`2[] parameters, Func`2 body, Func`2 func)
at BLToolkit.Data.Linq.ParseInfo.CheckIfLambda(Int32 nparms, Func`2 lambda)
at BLToolkit.Data.Linq.ParseInfoExtension.<>c__DisplayClass5.<IsQueryableMethod>b__1(ParseInfo l)
at BLToolkit.Data.Linq.ParseInfoExtension.IsMethod(ParseInfo`1 pi, Type declaringType, String methodName, Func`2[] args, Func`2 func)
at BLToolkit.Data.Linq.ParseInfoExtension.IsQueryableMethod(ParseInfo`1 pi, Func`3 lambda)
at BLToolkit.Data.Linq.ExpressionParser`1.<>c__DisplayClass79.<ParseSequenceInternal>b__1a(ParseInfo`1 pi)
at BLToolkit.Data.Linq.ParseInfo`1.Match(Func`2[] matches)
at BLToolkit.Data.Linq.ExpressionParser`1.ParseSequenceInternal(ParseInfo info)
at BLToolkit.Data.Linq.ExpressionParser`1.ParseSequence(ParseInfo info)
at BLToolkit.Data.Linq.ExpressionParser`1.<>c__DisplayClass79.<>c__DisplayClass7b.<ParseSequenceInternal>b__19(ParseInfo seq)
at BLToolkit.Data.Linq.ParseInfoExtension.IsMethod(ParseInfo`1 pi, Type declaringType, String methodName, Func`2[] args, Func`2 func)
at BLToolkit.Data.Linq.ParseInfoExtension.IsQueryableMethod(ParseInfo`1 pi, Func`2 func)
at BLToolkit.Data.Linq.ExpressionParser`1.<>c__DisplayClass79.<ParseSequenceInternal>b__18(ParseInfo`1 pi)
at BLToolkit.Data.Linq.ParseInfo`1.Match(Func`2[] matches)
at BLToolkit.Data.Linq.ExpressionParser`1.ParseSequenceInternal(ParseInfo info)
at BLToolkit.Data.Linq.ExpressionParser`1.ParseSequence(ParseInfo info)
at BLToolkit.Data.Linq.ExpressionParser`1.<Parse>b__c(ParseInfo`1 pi)
at BLToolkit.Data.Linq.ParseInfo`1.Match(Func`2[] matches)
at BLToolkit.Data.Linq.ExpressionParser`1.Parse(DataProviderBase dataProvider, MappingSchema mappingSchema, Expression expression, ParameterExpression[] parameters)
at BLToolkit.Data.Linq.ExpressionInfo`1.GetExpressionInfo(DataProviderBase dataProvider, MappingSchema mappingSchema, Expression expr)
at BLToolkit.Data.Linq.Table`1.GetExpressionInfo(Expression expression, Boolean cache)
at BLToolkit.Data.Linq.Table`1.System.Linq.IQueryProvider.Execute[TResult](Expression expression)
at System.Linq.Queryable.Single[TSource](IQueryable`1 source)
at BusinessLogic.GroupCalendarDBManager.GetDefaultCalendarIDForUserByName(String sUN) in C:\PRJ\OpusFlow\BusinessLogic\GroupCalendarBL\GroupCalendarDBManager.vb:line 49
at BusinessLogic.Common.GetGroupCalendarIdForOutlookFolder(MAPIFolder mpf) in C:\PRJ\OpusFlow\BusinessLogic\Common.vb:line 601
at VstoVB1.ThisAddIn.colCalendarItems_ItemAdd(Object Item) in C:\PRJ\OpusFlow\VstoVB1\ThisAddIn.vb:line 39



Что ей не нравится? Подскажите, плиз.
Re: Queryable method call expected
От: senglory  
Дата: 11.03.10 23:52
Оценка:
Если я LINQ перепишу вот так:


        Dim cc = From gc In GroupCalendars _
                 Join ugc In User_GroupCalendars On ugc.GroupCalendarID Equals gc.ObjectID _
                 Join u In Users On ugc.UserID Equals u.ObjectID _
                 Where ugc.IsDefaultCalendar = True _
                 Select gc
        Dim cc2 = cc.Single()


то исключение пропадает. В чем дело?
Re[2]: Queryable method call expected
От: IT Россия linq2db.com
Дата: 12.03.10 00:14
Оценка:
Здравствуйте, senglory, Вы писали:

S>то исключение пропадает. В чем дело?


Думаю, бага.
Если нам не помогут, то мы тоже никого не пощадим.
Re: Queryable method call expected
От: IT Россия linq2db.com
Дата: 12.03.10 01:09
Оценка:
Здравствуйте, senglory, Вы писали:

Не могу повторить. Можно ли как-то без подробностей бизнеслогики?
Если нам не помогут, то мы тоже никого не пощадим.
Re[2]: Queryable method call expected
От: senglory  
Дата: 12.03.10 01:13
Оценка:
Здравствуйте, IT, Вы писали:

IT>Здравствуйте, senglory, Вы писали:


IT>Не могу повторить. Можно ли как-то без подробностей бизнеслогики?


Куда можно ZIP с упрощенным проектом скинуть?
Re[3]: Queryable method call expected
От: IT Россия linq2db.com
Дата: 12.03.10 03:57
Оценка:
Здравствуйте, senglory, Вы писали:

S>Куда можно ZIP с упрощенным проектом скинуть?


На e-male в профайле.
Если нам не помогут, то мы тоже никого не пощадим.
Re[2]: Queryable method call expected
От: senglory  
Дата: 12.03.10 15:42
Оценка: 80 (1)
Здравствуйте, senglory, Вы писали:

S>Если я LINQ перепишу вот так:



S>
S>        Dim cc = From gc In GroupCalendars _
S>                 Join ugc In User_GroupCalendars On ugc.GroupCalendarID Equals gc.ObjectID _
S>                 Join u In Users On ugc.UserID Equals u.ObjectID _
S>                 Where ugc.IsDefaultCalendar = True _
S>                 Select gc
S>        Dim cc2 = cc.Single()

S>


S>то исключение пропадает. В чем дело?



А если напишу так:


        Dim cc = From gc In GroupCalendars _
                         Join ugc In User_GroupCalendars On ugc.GroupCalendarID Equals gc.ObjectID _
                         Join u In Users On ugc.UserID Equals u.ObjectID _
                         Where ugc.IsDefaultCalendar = True AndAlso u.UserName = Common.UserName _
                         Select gc
        Dim cc2 = cc.Single()
        Return cc2.ObjectID


то появляется новое исключение:


03/12/2010 07:29 — BLToolkit.Data.Linq.LinqException: 'CompareString($VB$It.u.UserName, Common.UserName, False)' cannot be converted to SQL.
at BLToolkit.Data.Linq.ExpressionParser`1.ParseExpression(LambdaInfo lambda, ParseInfo parseInfo, QuerySource[] queries) in C:\PRJ\BLToolkit\Source\Data\Linq\ExpressionParser.cs:line 3564
at BLToolkit.Data.Linq.ExpressionParser`1.ParseCompare(LambdaInfo lambda, ExpressionType nodeType, ParseInfo left, ParseInfo right, QuerySource[] queries) in C:\PRJ\BLToolkit\Source\Data\Linq\ExpressionParser.cs:line 4316
at BLToolkit.Data.Linq.ExpressionParser`1.ParsePredicate(LambdaInfo lambda, ParseInfo parseInfo, QuerySource[] queries) in C:\PRJ\BLToolkit\Source\Data\Linq\ExpressionParser.cs:line 4165
at BLToolkit.Data.Linq.ExpressionParser`1.ParseSearchCondition(ICollection`1 conditions, LambdaInfo lambda, ParseInfo parseInfo, QuerySource[] queries) in C:\PRJ\BLToolkit\Source\Data\Linq\ExpressionParser.cs:line 5009
at BLToolkit.Data.Linq.ExpressionParser`1.ParseSearchCondition(ICollection`1 conditions, LambdaInfo lambda, ParseInfo parseInfo, QuerySource[] queries) in C:\PRJ\BLToolkit\Source\Data\Linq\ExpressionParser.cs:line 4966
at BLToolkit.Data.Linq.ExpressionParser`1.ParseWhere(LambdaInfo l, QuerySource select) in C:\PRJ\BLToolkit\Source\Data\Linq\ExpressionParser.cs:line 1133
at BLToolkit.Data.Linq.ExpressionParser`1.<>c__DisplayClass79.<>c__DisplayClass7d.<ParseSequenceInternal>b__1b(ParseInfo seq, LambdaInfo l) in C:\PRJ\BLToolkit\Source\Data\Linq\ExpressionParser.cs:line 361
at BLToolkit.Data.Linq.ParseInfoExtension.<>c__DisplayClass5.<IsQueryableMethod>b__2(LambdaInfo p) in C:\PRJ\BLToolkit\Source\Data\Linq\ParseInfoExtension.cs:line 51
at BLToolkit.Data.Linq.ParseInfo.<>c__DisplayClass1b.<CheckIfLambda>b__18(ParseInfo body) in C:\PRJ\BLToolkit\Source\Data\Linq\ParseInfo.cs:line 151
at BLToolkit.Data.Linq.ParseInfo.IsLambda[T](Func`2[] parameters, Func`2 body, Func`2 func) in C:\PRJ\BLToolkit\Source\Data\Linq\ParseInfo.cs:line 83
at BLToolkit.Data.Linq.ParseInfo.CheckIfLambda(Int32 nparms, Func`2 lambda) in C:\PRJ\BLToolkit\Source\Data\Linq\ParseInfo.cs:line 149
at BLToolkit.Data.Linq.ParseInfoExtension.<>c__DisplayClass5.<IsQueryableMethod>b__1(ParseInfo l) in C:\PRJ\BLToolkit\Source\Data\Linq\ParseInfoExtension.cs:line 51
at BLToolkit.Data.Linq.ParseInfoExtension.IsMethod(ParseInfo`1 pi, Type declaringType, String methodName, Func`2[] args, Func`2 func) in C:\PRJ\BLToolkit\Source\Data\Linq\ParseInfoExtension.cs:line 33
at BLToolkit.Data.Linq.ParseInfoExtension.IsQueryableMethod(ParseInfo`1 pi, Func`3 lambda) in C:\PRJ\BLToolkit\Source\Data\Linq\ParseInfoExtension.cs:line 48
at BLToolkit.Data.Linq.ExpressionParser`1.<>c__DisplayClass79.<ParseSequenceInternal>b__1a(ParseInfo`1 pi) in C:\PRJ\BLToolkit\Source\Data\Linq\ExpressionParser.cs:line 356
at BLToolkit.Data.Linq.ParseInfo`1.Match(Func`2[] matches) in C:\PRJ\BLToolkit\Source\Data\Linq\ParseInfoT.cs:line 16
at BLToolkit.Data.Linq.ExpressionParser`1.ParseSequenceInternal(ParseInfo info) in C:\PRJ\BLToolkit\Source\Data\Linq\ExpressionParser.cs:line 316
at BLToolkit.Data.Linq.ExpressionParser`1.ParseSequence(ParseInfo info) in C:\PRJ\BLToolkit\Source\Data\Linq\ExpressionParser.cs:line 189
at BLToolkit.Data.Linq.ExpressionParser`1.<>c__DisplayClass79.<>c__DisplayClass7d.<ParseSequenceInternal>b__1b(ParseInfo seq, LambdaInfo l) in C:\PRJ\BLToolkit\Source\Data\Linq\ExpressionParser.cs:line 360
at BLToolkit.Data.Linq.ParseInfoExtension.<>c__DisplayClass5.<IsQueryableMethod>b__2(LambdaInfo p) in C:\PRJ\BLToolkit\Source\Data\Linq\ParseInfoExtension.cs:line 51
at BLToolkit.Data.Linq.ParseInfo.<>c__DisplayClass1b.<CheckIfLambda>b__18(ParseInfo body) in C:\PRJ\BLToolkit\Source\Data\Linq\ParseInfo.cs:line 151
at BLToolkit.Data.Linq.ParseInfo.IsLambda[T](Func`2[] parameters, Func`2 body, Func`2 func) in C:\PRJ\BLToolkit\Source\Data\Linq\ParseInfo.cs:line 83
at BLToolkit.Data.Linq.ParseInfo.CheckIfLambda(Int32 nparms, Func`2 lambda) in C:\PRJ\BLToolkit\Source\Data\Linq\ParseInfo.cs:line 149
at BLToolkit.Data.Linq.ParseInfoExtension.<>c__DisplayClass5.<IsQueryableMethod>b__1(ParseInfo l) in C:\PRJ\BLToolkit\Source\Data\Linq\ParseInfoExtension.cs:line 51
at BLToolkit.Data.Linq.ParseInfoExtension.IsMethod(ParseInfo`1 pi, Type declaringType, String methodName, Func`2[] args, Func`2 func) in C:\PRJ\BLToolkit\Source\Data\Linq\ParseInfoExtension.cs:line 33
at BLToolkit.Data.Linq.ParseInfoExtension.IsQueryableMethod(ParseInfo`1 pi, Func`3 lambda) in C:\PRJ\BLToolkit\Source\Data\Linq\ParseInfoExtension.cs:line 48
at BLToolkit.Data.Linq.ExpressionParser`1.<>c__DisplayClass79.<ParseSequenceInternal>b__1a(ParseInfo`1 pi) in C:\PRJ\BLToolkit\Source\Data\Linq\ExpressionParser.cs:line 356
at BLToolkit.Data.Linq.ParseInfo`1.Match(Func`2[] matches) in C:\PRJ\BLToolkit\Source\Data\Linq\ParseInfoT.cs:line 16
at BLToolkit.Data.Linq.ExpressionParser`1.ParseSequenceInternal(ParseInfo info) in C:\PRJ\BLToolkit\Source\Data\Linq\ExpressionParser.cs:line 316
at BLToolkit.Data.Linq.ExpressionParser`1.ParseSequence(ParseInfo info) in C:\PRJ\BLToolkit\Source\Data\Linq\ExpressionParser.cs:line 189
at BLToolkit.Data.Linq.ExpressionParser`1.<>c__DisplayClass79.<>c__DisplayClass7b.<ParseSequenceInternal>b__19(ParseInfo seq) in C:\PRJ\BLToolkit\Source\Data\Linq\ExpressionParser.cs:line 331
at BLToolkit.Data.Linq.ParseInfoExtension.IsMethod(ParseInfo`1 pi, Type declaringType, String methodName, Func`2[] args, Func`2 func) in C:\PRJ\BLToolkit\Source\Data\Linq\ParseInfoExtension.cs:line 33
at BLToolkit.Data.Linq.ParseInfoExtension.IsQueryableMethod(ParseInfo`1 pi, Func`2 func) in C:\PRJ\BLToolkit\Source\Data\Linq\ParseInfoExtension.cs:line 236
at BLToolkit.Data.Linq.ExpressionParser`1.<>c__DisplayClass79.<ParseSequenceInternal>b__18(ParseInfo`1 pi) in C:\PRJ\BLToolkit\Source\Data\Linq\ExpressionParser.cs:line 321
at BLToolkit.Data.Linq.ParseInfo`1.Match(Func`2[] matches) in C:\PRJ\BLToolkit\Source\Data\Linq\ParseInfoT.cs:line 16
at BLToolkit.Data.Linq.ExpressionParser`1.ParseSequenceInternal(ParseInfo info) in C:\PRJ\BLToolkit\Source\Data\Linq\ExpressionParser.cs:line 316
at BLToolkit.Data.Linq.ExpressionParser`1.ParseSequence(ParseInfo info) in C:\PRJ\BLToolkit\Source\Data\Linq\ExpressionParser.cs:line 189
at BLToolkit.Data.Linq.ExpressionParser`1.<Parse>b__c(ParseInfo`1 pi) in C:\PRJ\BLToolkit\Source\Data\Linq\ExpressionParser.cs:line 139
at BLToolkit.Data.Linq.ParseInfo`1.Match(Func`2[] matches) in C:\PRJ\BLToolkit\Source\Data\Linq\ParseInfoT.cs:line 16
at BLToolkit.Data.Linq.ExpressionParser`1.Parse(DataProviderBase dataProvider, MappingSchema mappingSchema, Expression expression, ParameterExpression[] parameters) in C:\PRJ\BLToolkit\Source\Data\Linq\ExpressionParser.cs:line 114
at BLToolkit.Data.Linq.ExpressionInfo`1.GetExpressionInfo(DataProviderBase dataProvider, MappingSchema mappingSchema, Expression expr) in C:\PRJ\BLToolkit\Source\Data\Linq\ExpressionInfo.cs:line 56
at BLToolkit.Data.Linq.Table`1.GetExpressionInfo(Expression expression, Boolean cache) in C:\PRJ\BLToolkit\Source\Data\Linq\TableT.cs:line 90
at BLToolkit.Data.Linq.Table`1.System.Linq.IQueryProvider.Execute[TResult](Expression expression) in C:\PRJ\BLToolkit\Source\Data\Linq\TableT.cs:line 163
at System.Linq.Queryable.Single[TSource](IQueryable`1 source)
at BusinessLogic.GroupCalendarDBManager.GetDefaultCalendarID() in C:\PRJ\OpusFlow\1\BusinessLogic\GroupCalendarBL\GroupCalendarDBManager.vb:line 49
at BusinessLogic.Common.GetGroupCalendarIdForOutlookFolder(MAPIFolder mpf) in C:\PRJ\OpusFlow\1\BusinessLogic\Common.vb:line 619
at VstoVB1.ThisAddIn.colCalendarItems_ItemAdd(Object Item) in C:\PRJ\OpusFlow\1\VstoVB1\ThisAddIn.vb:line 39

Re: Queryable method call expected
От: IT Россия linq2db.com
Дата: 16.03.10 00:02
Оценка:
Здравствуйте, senglory, Вы писали:

Fixed.
Если нам не помогут, то мы тоже никого не пощадим.
Re[3]: Queryable method call expected
От: IT Россия linq2db.com
Дата: 16.03.10 00:03
Оценка:
Здравствуйте, senglory, Вы писали:

Fixed.
Если нам не помогут, то мы тоже никого не пощадим.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.