查找某一项是否重复。Expected:只有在找到多个项时才抛出异常。但我们在这里有不同的例外?
try
{
// Find duplicate item
duplicateItem = await _context.Items
.SingleAsync(m => m.UserId == userId && m.Name == "some item");
}
catch (Exception)
{
//Exception more than one item found
}01:48:06在迭代上下文类型‘.ApplicationDbContext’的查询结果时发生了异常。System.InvalidOperationException:源序列不包含任何元素。在System.Linq.AsyncEnumerable.Single_TSource in D:\a\1\s\Ix.NET\Source\System.Interactive.Async\Single.cs:line 136 at Microsoft.EntityFrameworkCore.Query.Internal.AsyncLinqOperatorProvider.TaskResultAsyncEnumerable
1.Enumerator.MoveNext(CancellationToken cancellationToken) at System.Linq.AsyncEnumerable.SelectEnumerableAsyncIterator2.MoveNextCore(CancellationToken cancellationToken( D:\a\1\s\Ix.NET\Source\System.Interactive.Async\Select.cs:line 106 at System.Linq.AsyncEnumerable.AsyncIterator1.MoveNext(CancellationToken cancellationToken) in D:\a\1\s\Ix.NET\Source\System.Interactive.Async\AsyncIterator.cs:line 98 at Microsoft.EntityFrameworkCore.Query.Internal.AsyncLinqOperatorProvider.ExceptionInterceptor1.EnumeratorExceptionInterceptor.MoveNext(CancellationToken cancellationToken) System.InvalidOperationException:源序列不包含任何元素。在System.Linq.AsyncEnumerable.Single_TSource in D:\a\1\s\Ix.NET\Source\System.Interactive.Async\Single.cs:line 136at Microsoft.EntityFrameworkCore.Query.Internal.AsyncLinqOperatorProvider.TaskResultAsyncEnumerable1.Enumerator.MoveNext(CancellationToken cancellationToken) at System.Linq.AsyncEnumerable.SelectEnumerableAsyncIterator2.MoveNextCore(CancellationToken cancellationToken)在D:\a\1\s\Ix.NET\Source\System.Interactive.Async\Select.cs:line 106at System.Linq.AsyncEnumerable.AsyncIterator1.MoveNext(CancellationToken cancellationToken) in D:\a\1\s\Ix.NET\Source\System.Interactive.Async\AsyncIterator.cs:line 98 at Microsoft.EntityFrameworkCore.Query.Internal.AsyncLinqOperatorProvider.ExceptionInterceptor1.EnumeratorExceptionInterceptor.MoveNext(CancellationToken cancellationToken)
发布于 2019-06-20 16:14:32
您混淆了SingleAsync和SingleOrDefaultAsync。
SingleAsync ->意味着如果没有找到任何条目或多个条目,它将引发
异步返回满足指定条件的序列的唯一元素,如果存在多个此类元素,则抛出异常。
SingleOrDefaultAsync ->意味着如果找到两个或多个条目,它将抛出。
异步返回序列中满足指定条件的唯一元素,或者如果不存在这样的元素,则返回默认值;如果超过一个元素满足该条件,此方法将抛出异常。
https://stackoverflow.com/questions/56690033
复制相似问题