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
Что ей не нравится? Подскажите, плиз.
Здравствуйте, 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
Если я 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()
то исключение пропадает. В чем дело?
Здравствуйте, senglory, Вы писали:
S>то исключение пропадает. В чем дело?
Думаю, бага.