-
Notifications
You must be signed in to change notification settings - Fork 936
Closed
Description
Hi,
When entity has "Filter Condition" in mapping dml update throws Collection was modified; enumeration operation may not execute.
Mapping:
ApplyFilter<MemberConditionFilter>()
This query fails(async and sync test cases are implemented)
await session.Query<TxnIssuer>()
.Where(x => guids.Contains(x.Guid))
.UpdateAsync(x => new TxnIssuer
{
MrcDailyMoved = "Y",
MrcDailyMovedDate = DateTime.Now
}).ConfigureAwait(false);
Unit Test Case 1: MultiThread_FilteredEntity_DmlStyleUpdateFails
Integration Test Case 1: MultiThread_DmlStyleQueryUpdateFails
I personally opened some issues about NHibernate Filters and some of them is related with dml style update with filters and I know those bugs are resolved. This issue could be regression.
Stack 1
InvalidOperationException
Enumerator.MoveNextRare()
Enumerator.MoveNext()
BasicExecutor.Execute(QueryParameters parameters, ISessionImplementor session)
QueryTranslatorImpl.ExecuteUpdate(QueryParameters queryParameters, ISessionImplementor session)
HQLQueryPlan.PerformExecuteUpdate(QueryParameters queryParameters, ISessionImplementor session)
SessionImpl.ExecuteUpdate(IQueryExpression queryExpression, QueryParameters queryParameters)
AbstractQueryImpl2.ExecuteUpdate()
DefaultQueryProvider.ExecuteDml[T](QueryMode queryMode, Expression expression)
DmlExtensionMethods.ExecuteUpdate[TSource](IQueryable`1 source, Expression updateExpression, Boolean versioned)
DmlExtensionMethods.Update[TSource](IQueryable`1 source, Expression`1 expression)
Stack 2
InvalidOperationException
Enumerator.MoveNextRare()
Enumerator.MoveNext()
SelectListIterator`2.MoveNext()
Enumerable.SelectManyIterator[TSource,TCollection,TResult](IEnumerable`1 source, Func`2 collectionSelector, Func`3 resultSelector)+MoveNext()
Lookup`2.Create(IEnumerable`1 source, Func`2 keySelector, IEqualityComparer`1 comparer)
GroupedEnumerable`2.ToArray()
Buffer`1.ctor(IEnumerable`1 source)
OrderedEnumerable`1.GetEnumerator()+MoveNext()
SelectIPartitionIterator`2.MoveNext()
SelectManySingleSelectorIterator`2.ToArray()
Enumerable.ToArray[TSource](IEnumerable`1 source)
ParametersBackTrackExtensions.GetQueryParameterTypes(IEnumerable`1 parameterSpecs, IList`1 sqlQueryParametersList, ISessionFactoryImplementor factory)
BasicExecutor.Execute(QueryParameters parameters, ISessionImplementor session)
QueryTranslatorImpl.ExecuteUpdate(QueryParameters queryParameters, ISessionImplementor session)
HQLQueryPlan.PerformExecuteUpdate(QueryParameters queryParameters, ISessionImplementor session)
SessionImpl.ExecuteUpdate(IQueryExpression queryExpression, QueryParameters queryParameters)
AbstractQueryImpl2.ExecuteUpdate()
DefaultQueryProvider.ExecuteDml[T](QueryMode queryMode, Expression expression)
DmlExtensionMethods.ExecuteUpdate[TSource](IQueryable`1 source, Expression updateExpression, Boolean versioned)
DmlExtensionMethods.Update[TSource](IQueryable`1 source, Expression`1 expression)