Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 对谓词使用StringComparison重载时EF Core中出现NullReferenceException_C#_Entity Framework_Linq_Entity Framework Core - Fatal编程技术网

C# 对谓词使用StringComparison重载时EF Core中出现NullReferenceException

C# 对谓词使用StringComparison重载时EF Core中出现NullReferenceException,c#,entity-framework,linq,entity-framework-core,C#,Entity Framework,Linq,Entity Framework Core,我们正在将一个项目从使用EF转换为使用EF核心。我们有以下代码行,以前可以工作,但现在不行: // throws NullReferenceException var u = db.Users.FirstOrDefault(x => x.PresenterID.Equals(uid, StringComparison.OrdinalIgnoreCase)); 但是,如果我们不使用StringComparison重载,它可以工作: // this works var u = db.User

我们正在将一个项目从使用EF转换为使用EF核心。我们有以下代码行,以前可以工作,但现在不行:

// 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));
这是一个大型项目,我们希望避免查找和修改进行此类比较的所有代码。为什么这会抛出一个NullReferenceException,并且在不更改代码的情况下可以避免它?这是堆栈跟踪。谢谢

在lambda_methodClosure,用户位于 System.Linq.Enumerable.WhereEnumerableInterator1.MoveNext位于 System.Linq.Enumerable.FirstOrDefault[TSource]IEnumerable1源 在 Microsoft.EntityFrameworkCore.Query.Internal.LinqOperatorProvider.ResultEnumerable1.GetEnumerator 在 Microsoft.EntityFrameworkCore.Query.Internal.LinqOperatorProvider.d\uu 172.MoveNext 在 Microsoft.EntityFrameworkCore.Query.Internal.LinqOperatorProvider.ExceptionInterceptor 1.EnumeratorExceptionInterceptor.MoveNext 位于System.Linq.Enumerable.First[TSource]IEnumerable1的源 Microsoft.EntityFrameworkCore.Query.Internal.QueryCompiler.c_uuDisplayClass15_1`1.b_uu\u0QueryContext 质控处 我们的.Project.Service.ContractsFolderService.ValidateTractUsersBIContract xmlContract,IDataContext数据库位于 C:\Projects\Out.Project\Main\Service\ContractsFolderService.cs:line 436

根据EntityFrameworkCore Github repo的研究,LINQ to SQL还不支持这种重载。请参阅此特定注释,其中提供了有关阻止此重载被转换的问题的一些详细信息:

我猜发生null引用异常是因为它会回调所有结果以评估客户端上的字符串比较,并且对于其中一个或多个结果,PresenterID为null