我初始化的User info表只没有FacebookID列,并且有2条记录。现在,我添加了一个FacebookID列,以使用迁移EF核心框架练习通过Facebook进行注册。在首次调用中,添加的记录和下的2 FacebookID为null。我想第二次打电话,它必须检查FacebookID是否存在,如果存在,请返回FacebookID存在的消息。如果不存在,请添加新用户
我写了一个函数来检查,因为图像中的2个Facebookid为null,所以它不起作用
RuleFor(model => model).MustAsync((x, cancellationToken) => FacebookIdMustUnique(x.FacebookId, cancellationToken))
.WithMessage(string.Format(Resource.Validation_Existed, Resource.FacebookId));
async Task<bool> FacebookIdMustUnique(string facebookId, CancellationToken cancellationToken = default(CancellationToken))
{
var user = await userService.GetAsync(x =>
x.FacebookId.Equals(facebookId, StringComparison.InvariantCultureIgnoreCase),
cancellationToken
);
return user == null;
}
答案 0 :(得分:0)
我写了一个函数来检查,因为图像中的2个Facebookid为null,所以它不起作用
当null
为null
时,以下代码将插入此行:
x.FacebookId.Equals(facebookId, StringComparison.InvariantCultureIgnoreCase)
要解决此问题,在调用其.Equals()
方法之前,需要考虑它是否为null
:
async Task FacebookIdMustUnique(string facebookId, CancellationToken cancellationToken = default(CancellationToken)) { if(facebookId ==null){ return true; } var user = await userService.GetAsync( x => x.FacebookId.Equals(facebookId, StringComparison.InvariantCultureIgnoreCase), cancellationToken ); return user == null; }
(在您的情况下,如果facebook id为true
可能很好,所以我只返回Nullable
)
提醒一下:为flexbox
类型检查是否为空始终是一个好习惯。