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?