pid*_*rep 9 .net c# linq entity-framework
这很好用:
return Members
.FirstOrDefault(m => m.Agreement.Equals(agreement));
Run Code Online (Sandbox Code Playgroud)
但如果找不到匹配项,则抛出异常:
return Members
.Include("Files")
.FirstOrDefault(m => m.Agreement.Equals(agreement) &&
!m.Files.Any(f => f.Status.Equals(12)));
Run Code Online (Sandbox Code Playgroud)
那么当我使用Include时,如何获得first/default(可能为null)?
例外是:
System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.TypedTranslator中System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.ConstantTranslator.TypedTranslate(ExpressionConverter parent,ConstantExpression linq)的意外异常
1.Translate(ExpressionConverter parent, Expression linq) at System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.TranslateExpression(Expression linq) at System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.EqualsTranslator.TypedTranslate(ExpressionConverter parent, BinaryExpression linq) at System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.TypedTranslator
1.Translate(ExpressionConverter父,表达LINQ)在System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.TranslateExpression(表达式LINQ)在System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.TranslateLambda(LambdaExpression拉姆达DbExpression输入)在System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.TranslateLambda(LambdaExpression拉姆达,DbExpression输入,DbExpressionBinding&结合)在System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.MethodCallTranslator.OneLambdaTranslator.Translate( System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.MethodCallTranslator.OneLambdaTranslator中的ExpressionConverter parent,MethodCallExpression调用,DbExpression&source,DbExpressionBinding&sourceBinding,DbExpression&lambda).在System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.MethodCallTranslator.SequenceMethodTranslator.Translate(ExpressionConverter parent,MethodCallExpression call,SequenceMethod sequenceMethod)中翻译(ExpressionConverter parent,MethodCallExpression调用)
在System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.MethodCallTranslator.TypedTranslate(ExpressionConverter父,MethodCallExpression LINQ)在System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.TypedTranslator1.Translate(ExpressionConverter parent, Expression linq) at System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.TranslateExpression(Expression linq) at System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.NotTranslator.TypedTranslate(ExpressionConverter parent, UnaryExpression linq) at System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.TypedTranslator
1.Translate(ExpressionConverter父,表达LINQ )在System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.TranslateExpression(表达式LINQ)在System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.BinaryTranslator.TypedTranslate(ExpressionConverter父,BinaryExpression LINQ)在System.Data .Entity.Core.Objects.ELinq.ExpressionConverter.TypedTranslator1.Translate(ExpressionConverter parent, Expression linq) at System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.TranslateExpression(Expression linq) at System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.TranslateLambda(LambdaExpression lambda, DbExpression input) at System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.TranslateLambda(LambdaExpression lambda, DbExpression input, DbExpressionBinding& binding) at System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.MethodCallTranslator.OneLambdaTranslator.Translate(ExpressionConverter parent, MethodCallExpression call, DbExpression& source, DbExpressionBinding& sourceBinding, DbExpression& lambda) at System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.MethodCallTranslator.OneLambdaTranslator.Translate(ExpressionConverter parent, MethodCallExpression call) at System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.MethodCallTranslator.SequenceMethodTranslator.Translate(ExpressionConverter parent, MethodCallExpression call, SequenceMethod sequenceMethod)
1.Translate(ExpressionConverter父,表达LINQ)在System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.TranslateExpression(表达式LINQ)在System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.MethodCallTranslator.AggregateTranslator.Translate (ExpressionConverter父,MethodCallExpression呼叫)在System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.MethodCallTranslator.SequenceMethodTranslator.Translate(ExpressionConverter父,MethodCallExpression呼叫,SequenceMethod sequenceMethod)
at System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.MethodCallTranslator.TypedTranslate(ExpressionConverter parent, MethodCallExpression linq) at System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.TypedTranslator
在System.Data.Entity.Core.Objects.ELinq. System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.TypedTranslator中的ExpressionConverter.MethodCallTranslator.TypedTranslate(ExpressionConverter parent,MethodCallExpression linq)1.Translate(ExpressionConverter parent, Expression linq) at System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.TranslateExpression(Expression linq) at System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.Convert()
1 forMergeOption)在System.Data.Entity.Core.Objects.ObjectQuery
at System.Data.Entity.Core.Objects.ELinq.ELinqQueryState.GetExecutionPlan(Nullable1.<>c__DisplayClass7.<GetResults>b__6() at System.Data.Entity.Core.Objects.ObjectContext.ExecuteInTransaction[T](Func
1 func,IDbExecutionStrategy executionStrategy,Boolean startLocalTransaction,Boolean releaseConnectionOnSuccess)at System.Data.Entity.Core.Objects.ObjectQuery1.<>c__DisplayClass7.<GetResults>b__5() at System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute[TResult](Func
1 operation)at System.Data.Entity.Core1.GetResults(Nullable
System.Data.Entity.Core.Objects上的System.Data.Entity.Core.Objects.ObjectQuery1.<System.Collections.Generic.IEnumerable<T>.GetEnumerator>b__0() at System.Data.Entity.Internal.LazyEnumerator
1.MoveNext()处于System.Data.Entity.Core.Objects的System.Linq.Enumerable.Single [TSource](IEnumerable1 source) at System.Data.Entity.Core.Objects.ELinq.ObjectQueryProvider.<GetElementFunction>b__3[TResult](IEnumerable
1序列)的.Objects.ObjectQuery 1 forMergeOption .ELinq.ObjectQueryProvider.ExecuteSingle [TResult](IEnumerable1 query, Expression queryRoot) at System.Data.Entity.Core.Objects.ELinq.ObjectQueryProvider.System.Linq.IQueryProvider.Execute[TResult](Expression expression) at System.Data.Entity.Internal.Linq.DbQueryProvider.Execute[TResult](Expression expression) at System.Linq.Queryable.Count[TSource](IQueryable
1 source)
Ned*_*nov 10
这个怎么样:
return Members
.Include("Files")
.Where(m => m.Agreement.Equals(agreement) &&
m.Files != null &&
!m.Files.Any(f => f.Status.Equals(12)))
.FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)
使用Microsoft.EntityFrameworkCore 3.1.7
这个效果很好:
var myEntity = await dbContext.MyEntities.Include(x => x.MyOtherEntities).FirstOrDefaultAsync(x => x.Name == "Not existing name");
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5446 次 |
最近记录: |