You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用FirstOrDefault仍抛出Sequence contains no elements异常(EF Core 8)

EF Core 8 SqlQueryRaw执行异常排查

问题场景

DataSourceM和DataDeliveryM均为标记了[NotMapped]特性的普通类(无虚拟方法),所有公共属性均有默认值。执行以下代码时,Query1可成功获取结果,但Query2调用.FirstOrDefault()时始终抛出异常:

using (ApplicationDbContext context = new())
{
    foreach (ConfigurationSimple config in result)
    {
         //Query1
         DataSourceM sdResult = context.Database.SqlQueryRaw<DataSourceM>(
             @"SELECT Id, BucketName, Root FROM DataSource where Id = @p0", config.DataSourceId).FirstOrDefault();

         //Query2
         DataDeliveryM ddlResult = context.Database.SqlQueryRaw<DataDeliveryM>(
             @"SELECT DataDeliveryTypeId, FromDirectAddress, ToDirectAddress, BucketName, Folder
             FROM DataDelivery
             WHERE Id = @p0 AND vendorID = @p1", config.DataDeliveryId, config.VendorId).FirstOrDefault();
    }
}

异常信息

System.InvalidOperationException
  HResult=0x80131509
  Message=Sequence contains no elements
  Source=System.Linq
  StackTrace:
   at System.Linq.ThrowHelper.ThrowNoElementsException()
   at System.Linq.Enumerable.MinMaxInteger[T,TMinMax](IEnumerable`1 source)
   at Microsoft.EntityFrameworkCore.Query.RelationalShapedQueryCompilingExpressionVisitor.ShaperProcessingExpressionVisitor.VisitBinary(BinaryExpression binaryExpression)
   at System.Dynamic.Utils.ExpressionVisitorUtils.VisitBlockExpressions(ExpressionVisitor visitor, BlockExpression block)
   at System.Linq.Expressions.ExpressionVisitor.VisitBlock(BlockExpression node)
   at Microsoft.EntityFrameworkCore.Query.RelationalShapedQueryCompilingExpressionVisitor.ShaperProcessingExpressionVisitor.VisitExtension(Expression extensionExpression)
   at Microsoft.EntityFrameworkCore.Query.RelationalShapedQueryCompilingExpressionVisitor.ShaperProcessingExpressionVisitor.ProcessShaper(Expression shaperExpression, RelationalCommandCache& relationalCommandCache, IReadOnlyList`1& readerColumns, LambdaExpression& relatedDataLoaders, Int32& collectionId)
   at Microsoft.EntityFrameworkCore.Query.RelationalShapedQueryCompilingExpressionVisitor.VisitShapedQuery(ShapedQueryExpression shapedQueryExpression)
   at Microsoft.EntityFrameworkCore.Query.ShapedQueryCompilingExpressionVisitor.VisitExtension(Expression extensionExpression)
   at Microsoft.EntityFrameworkCore.Query.RelationalShapedQueryCompilingExpressionVisitor.VisitExtension(Expression extensionExpression)
   at Microsoft.EntityFrameworkCore.Query.QueryCompilationContext.CreateQueryExecutor[TResult](Expression query)
   at Microsoft.EntityFrameworkCore.Storage.Database.CompileQuery[TResult](Expression query, Boolean async)
   at Microsoft.EntityFrameworkCore.Query.Internal.QueryCompiler.CompileQueryCore[TResult](IDatabase database, Expression query, IModel model, Boolean async)
   at Microsoft.EntityFrameworkCore.Query.Internal.QueryCompiler.<>c__DisplayClass9_0`1.<Execute>b__0()
   at Microsoft.EntityFrameworkCore.Query.Internal.CompiledQueryCache.GetOrAddQuery[TResult](Object cacheKey, Func`1 compiler)
   at Microsoft.EntityFrameworkCore.Query.Internal.QueryCompiler.Execute[TResult](Expression query)
   at Microsoft.EntityFrameworkCore.Query.Internal.EntityQueryProvider.Execute[TResult](Expression expression)

环境与排查情况

  • 技术栈:.NET 8 + Entity Framework Core 8.0.8
  • 数据库验证:通过MySQL Workbench执行Query2对应的SQL语句,可正常返回0至多条记录,但代码中无论传入什么参数都会抛出上述异常
  • 历史解决尝试:此前Query1曾出现相同异常,将结果类从DataSourceModel改名为DataSourceM后问题解决,但该方法对Query2无效

更新:问题根源

此前错误理解了[NotMapped]特性的作用:该特性表示属性或类应排除在数据库映射之外,并非“结果集中可以缺少该属性”。


内容的提问来源于stack exchange,提问作者Peter S

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 04:18:24