Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.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
Asp.net core EF/ASP核心句柄字符串属性为NULL而不是空_Asp.net Core_Entity Framework Core_Asp.net Core Webapi - Fatal编程技术网

Asp.net core EF/ASP核心句柄字符串属性为NULL而不是空

Asp.net core EF/ASP核心句柄字符串属性为NULL而不是空,asp.net-core,entity-framework-core,asp.net-core-webapi,Asp.net Core,Entity Framework Core,Asp.net Core Webapi,我注意到,当绑定时,我的对象在客户端保留为空的所有属性在服务器端保持为空 这最终将在稍后执行某些LINQ Where条件时引发null对象异常,因为字符串属性是null而不是空的 我已经尝试添加context.DisplayMetadata.ConvertEmptyStringToNull=false的CustomMetadataProvider;就像迪库斯在这里,但运气不好 providers = await dbData.Providers.AsNoTracking().

我注意到,当绑定时,我的对象在客户端保留为空的所有属性在服务器端保持为空

这最终将在稍后执行某些LINQ Where条件时引发null对象异常,因为字符串属性是null而不是空的

我已经尝试添加context.DisplayMetadata.ConvertEmptyStringToNull=false的CustomMetadataProvider;就像迪库斯在这里,但运气不好

 providers = await dbData.Providers.AsNoTracking().
                OrderBy(order)
                .Where(q =>
            (query.search == null ||
            q.No.ToString().Contains(query.search) ||
            q.Name.Contains(query.search) ||
            q.Address.Contains(query.search) ||
            q.PhoneFax.Contains(phoneQuery) ||
            q.PhoneNumber.Contains(phoneQuery) ||
            q.PhoneTollFree.Contains(phoneQuery)) && (query.getDeleted || !q.Deleted))
            .Skip((query.limit * (query.page - 1))).Take(query.limit)
                .AsNoTracking().ToArrayAsync();

字符串应该不可为null,或者您应该处理null大小写。在数据库中,支持列将设置为NULL或不为NULL,具体取决于是否将
[Require]
属性添加到属性。如果不是必需的,那么NULL是一个完全可以接受的值,甚至可以说是最好的值,因为它显式地表示“unset”,而不是“设置为空字符串”

长和短,如果您有要查询的可空属性,请首先检查空值:


我知道这个解决方案,但我想知道为什么在以前的web API和EF中我不必处理这个问题。在
q.Name
之类的东西上调用
Contains
,如果它为空,总是一个问题。这是一个简单的语言级异常,没有办法解决。如果您以前没有遇到问题,那么唯一的解释是,在上一次迭代中,这些列都不是空的。
(q.Name != null && q.Name.Contains(query.Search)) ||