EF/ASP 核心句柄字符串 属性 为 NULL 而不是空
EF/ASP Core handle string property as NULL instead of empty
我注意到我的对象的所有属性在客户端留空,在绑定时在服务器端保持为空。
这最终会在稍后执行一些 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();
字符串应该是 non-nullable 或者您应该处理 null 的情况。在您的数据库中,支持列将设置为 NULL 或 NOT NULL,具体取决于您是否将 [Require]
属性添加到 属性 中。如果不需要,那么 NULL 是一个完全可以接受的值,甚至可以说是 最佳 值,因为它明确表示 "unset" 而不是 "set to an empty string".
总而言之,如果您有一个可以为空的 属性 要查询,请先检查空值 :
(q.Name != null && q.Name.Contains(query.Search)) ||
我注意到我的对象的所有属性在客户端留空,在绑定时在服务器端保持为空。
这最终会在稍后执行一些 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();
字符串应该是 non-nullable 或者您应该处理 null 的情况。在您的数据库中,支持列将设置为 NULL 或 NOT NULL,具体取决于您是否将 [Require]
属性添加到 属性 中。如果不需要,那么 NULL 是一个完全可以接受的值,甚至可以说是 最佳 值,因为它明确表示 "unset" 而不是 "set to an empty string".
总而言之,如果您有一个可以为空的 属性 要查询,请先检查空值 :
(q.Name != null && q.Name.Contains(query.Search)) ||