This question is locked. New answers and comments are not allowed.
I believe the following used to work in the previous release (2011.2.713):
Now when I do this with release 2011.3.1116, I get the following stack trace:
To work around this I had to call ToArray() on the IEnumerable. Any thoughts?
public void Delete(IEnumerable<Guid> pTokenIds){ IEnumerable<Token> tokens = _Context.Tokens.Where(t => pTokenIds.Contains(t.TokenId)); _Context.Delete(tokens); _Context.SaveChanges();}Now when I do this with release 2011.3.1116, I get the following stack trace:
Telerik.OpenAccess.Exceptions.DataStoreException: Error setting query parameter {1} = 'System.Linq.Enumerable+WhereSelectEnumerableIterator`2[Telerik.Web.UI.GridItem,System.Guid]' at PreparedStatement index 1 in
SELECT a.[TokenId] AS COL1, a.[ConfirmationDate] AS COL2, a.[CreationDate] AS COL3, a.[Deleted] AS COL4, a.[DeletionDate] AS COL5, a.[GroupName] AS COL6, a.[OrganizationId] AS COL7, a.[UserEmailAddress] AS COL8 FROM [Tokens] a WHERE (a.[TokenId] IN (NULL) AND (1=0)) ORDER BY a.[TokenId]
(set event logging to all to see parameter values)
System.ArgumentOutOfRangeException: Wrong type of instance, expected System.Guid
Parameter name: instance
Actual value was System.Linq.Enumerable+WhereSelectEnumerableIterator`2[[Telerik.Web.UI.GridItem, Telerik.Web.UI, Version=2011.3.1115.40, Culture=neutral, PublicKeyToken=121fae78165ba3d4],[System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]].
at OpenAccessRuntime.Data.AdoTypeConverterUtils.Check[T](Object instance)
at OpenAccessRuntime.Data.GuidConverter.Write(DataHolder& data)
at OpenAccessRuntime.Relational.metadata.RelationalSimpleField.setQueryParam(PreparedStatement ps, Int32 firstParam, Object val)
at OpenAccessRuntime.Relational.fetch.SqlBuffer.setParamsOnPS(ModelMetaData jmd, SqlDriver driver, PreparedStatement ps, Object[] parameters, String sqlParam) System.ArgumentOutOfRangeException: Wrong type of instance, expected System.Guid
Parameter name: instance
Actual value was System.Linq.Enumerable+WhereSelectEnumerableIterator`2[[Telerik.Web.UI.GridItem, Telerik.Web.UI, Version=2011.3.1115.40, Culture=neutral, PublicKeyToken=121fae78165ba3d4],[System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]].
at OpenAccessRuntime.Data.AdoTypeConverterUtils.Check[T](Object instance)
at OpenAccessRuntime.Data.GuidConverter.Write(DataHolder& data)
at OpenAccessRuntime.Relational.metadata.RelationalSimpleField.setQueryParam(PreparedStatement ps, Int32 firstParam, Object val)
at OpenAccessRuntime.Relational.fetch.SqlBuffer.setParamsOnPS(ModelMetaData jmd, SqlDriver driver, PreparedStatement ps, Object[] parameters, String sqlParam) ---> System.ArgumentOutOfRangeException: Wrong type of instance, expected System.Guid
Parameter name: instance
Actual value was System.Linq.Enumerable+WhereSelectEnumerableIterator`2[[Telerik.Web.UI.GridItem, Telerik.Web.UI, Version=2011.3.1115.40, Culture=neutral, PublicKeyToken=121fae78165ba3d4],[System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]].
at OpenAccessRuntime.Data.AdoTypeConverterUtils.Check[T](Object instance)
at OpenAccessRuntime.Data.GuidConverter.Write(DataHolder& data)
at OpenAccessRuntime.Relational.metadata.RelationalSimpleField.setQueryParam(PreparedStatement ps, Int32 firstParam, Object val)
at OpenAccessRuntime.Relational.fetch.SqlBuffer.setParamsOnPS(ModelMetaData jmd, SqlDriver driver, PreparedStatement ps, Object[] parameters, String sqlParam)
--- End of inner exception stack trace ---
at OpenAccessRuntime.ExceptionWrapper.Throw()
at OpenAccessRuntime.storagemanager.logging.LoggingStorageManager.fetchNextQueryResult(ApplicationContext context, RunningQuery runningQuery, Int32 skipAmount)
at OpenAccessRuntime.DataObjects.SynchronizedPMProxy.getNextQueryResult(QueryResultWrapper aQrs, Int32 skipAmount)
at OpenAccessRuntime.DataObjects.ForwardQueryResult.Initialize(Int32 indexParam)
at OpenAccessRuntime.DataObjects.ForwardQueryResult.get_Item(Int32 indexParam)
at OpenAccessRuntime.DataObjects.SynchronizedQueryResult.get_Item(Int32 index)
at OpenAccessRuntime.ListEnumerator.setCurrent(Int32 _pos)
at OpenAccessRuntime.ListEnumerator.Move(Int32 relative)
at OpenAccessRuntime.DataObjects.PMProxy.deletePersistentAll(IEnumerator enr)
at VirtualOffice.Controllers.TokenController.Delete(IEnumerable`1 pTokenIds) in C:\inetpub\wwwroot\VirtualOffice\Common Libraries\VirtualOffice.Controllers\TokenController.cs:line 172
at Controls_ObjectPanes_Invitations.OnInvitationToolbarButtonClick(Object sender, RadToolBarEventArgs e) in c:\inetpub\wwwroot\VirtualOffice\Web\Portal\Controls\ObjectPanes\Invitations.ascx.cs:line 117
To work around this I had to call ToArray() on the IEnumerable. Any thoughts?