diff --git a/src/NHibernate.Test/Async/LinqBulkManipulation/Fixture.cs b/src/NHibernate.Test/Async/LinqBulkManipulation/Fixture.cs index 37f5b248623..50746e95a21 100644 --- a/src/NHibernate.Test/Async/LinqBulkManipulation/Fixture.cs +++ b/src/NHibernate.Test/Async/LinqBulkManipulation/Fixture.cs @@ -1158,6 +1158,18 @@ public async Task DeleteSyntaxWithCompositeIdAsync() } } + [Test] + public async Task DeleteOnFilterThrowsAsync() + { + using (var s = OpenSession()) + using (s.BeginTransaction()) + { + var a = await (s.Query().Take(1).SingleOrDefaultAsync()); + var query = a.AssociatedEntities.AsQueryable(); + Assert.That(() => query.Delete(), Throws.InstanceOf()); + } + } + #endregion } -} \ No newline at end of file +} diff --git a/src/NHibernate.Test/LinqBulkManipulation/Fixture.cs b/src/NHibernate.Test/LinqBulkManipulation/Fixture.cs index c376163051d..fd514dee36d 100644 --- a/src/NHibernate.Test/LinqBulkManipulation/Fixture.cs +++ b/src/NHibernate.Test/LinqBulkManipulation/Fixture.cs @@ -1199,6 +1199,18 @@ public void DeleteOnProjectionThrows() } } + [Test] + public void DeleteOnFilterThrows() + { + using (var s = OpenSession()) + using (s.BeginTransaction()) + { + var a = s.Query().Take(1).SingleOrDefault(); + var query = a.AssociatedEntities.AsQueryable(); + Assert.That(() => query.Delete(), Throws.InstanceOf()); + } + } + #endregion } -} \ No newline at end of file +} diff --git a/src/NHibernate/Async/Linq/DefaultQueryProvider.cs b/src/NHibernate/Async/Linq/DefaultQueryProvider.cs index 87053fcb45c..f8447be888a 100644 --- a/src/NHibernate/Async/Linq/DefaultQueryProvider.cs +++ b/src/NHibernate/Async/Linq/DefaultQueryProvider.cs @@ -58,12 +58,15 @@ protected virtual async Task ExecuteQueryAsync(NhLinqExpression nhLinqEx public Task ExecuteDmlAsync(QueryMode queryMode, Expression expression, CancellationToken cancellationToken) { + if (Collection != null) + throw new NotSupportedException("DML operations are not supported for filters."); if (cancellationToken.IsCancellationRequested) { return Task.FromCanceled(cancellationToken); } try { + var nhLinqExpression = new NhLinqDmlExpression(queryMode, expression, Session.Factory); var query = Session.CreateQuery(nhLinqExpression); diff --git a/src/NHibernate/Linq/DefaultQueryProvider.cs b/src/NHibernate/Linq/DefaultQueryProvider.cs index 57bd1f18513..66c245c797e 100644 --- a/src/NHibernate/Linq/DefaultQueryProvider.cs +++ b/src/NHibernate/Linq/DefaultQueryProvider.cs @@ -220,6 +220,9 @@ public virtual void SetResultTransformerAndAdditionalCriteria(IQuery query, NhLi public int ExecuteDml(QueryMode queryMode, Expression expression) { + if (Collection != null) + throw new NotSupportedException("DML operations are not supported for filters."); + var nhLinqExpression = new NhLinqDmlExpression(queryMode, expression, Session.Factory); var query = Session.CreateQuery(nhLinqExpression); diff --git a/teamcity.build b/teamcity.build index 7a5c05a4d2f..69a4216d044 100644 --- a/teamcity.build +++ b/teamcity.build @@ -3,6 +3,7 @@ + @@ -12,7 +13,15 @@ - + + + + + + + + + @@ -32,10 +41,12 @@ + +