【发布时间】:2019-08-25 04:17:00
【问题描述】:
我们正在将项目从使用 EF 转换为使用 EF Core。我们有以下代码行,以前可以工作,但现在不行:
// throws NullReferenceException
var u = db.Users.FirstOrDefault(x => x.PresenterID.Equals(uid, StringComparison.OrdinalIgnoreCase));
但是,如果我们不使用 StringComparison 重载,它可以工作:
// this works
var u = db.Users.FirstOrDefault(x => x.PresenterID.Equals(uid));
这是一个大型项目,我们希望避免查找和修改所有进行此类比较的代码。为什么这会抛出 NullReferencException 并且可以在不更改代码的情况下避免它?这是堆栈跟踪。谢谢。
在 lambda_method(Closure , User ) at System.Linq.Enumerable.WhereEnumerableIterator
1.MoveNext() at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable1 来源)
在 Microsoft.EntityFrameworkCore.Query.Internal.LinqOperatorProvider.ResultEnumerable1.GetEnumerator() at Microsoft.EntityFrameworkCore.Query.Internal.LinqOperatorProvider.<_TrackEntities>d__172.MoveNext() 在 Microsoft.EntityFrameworkCore.Query.Internal.LinqOperatorProvider.ExceptionInterceptor1.EnumeratorExceptionInterceptor.MoveNext() at System.Linq.Enumerable.First[TSource](IEnumerable1 来源)在 Microsoft.EntityFrameworkCore.Query.Internal.QueryCompiler.c__DisplayClass15_1`1.b__0(QueryContext 质量控制)在 Our.Project.Service.ContractsFolderService.ValidateContractUsers(BIContract xmlContract, IDataContext db) 在 C:\Projects\Out.Project\Main\Service\ContractsFolderService.cs:line 436
【问题讨论】:
标签: c# entity-framework linq entity-framework-core