FluentValidation:如何简化这段代码?
FluentValidation: how to simplify this code?
我正在使用 FluentValidation 库来创建这样的验证器:
谁能帮我简化这部分代码?
private bool UniqueSimNo(string simNo)
{
MyContext _db = new MyContext();
Sim s = _db.Sims.Where(x => x.SimNo.ToLower() == simNo.ToLower()).SingleOrDefault();
var sim = _db.Sims.Where(x => x.SimNo.ToLower() == s.SimNo.ToLower()).Where(x => x.Id != s.Id).FirstOrDefault();
if (sim == null) return true;
return false;
}
嗯,如果您不将 id 作为参数传递给您的方法,您的代码就没有意义。
我猜您想对新项目 (id = 0) 和现有项目 (id !=0) 使用相同的验证器。
这一行在你的 SingleOrDefault
测试后没有按照你认为的那样做,因为如果有多个项目具有相同的 SimNo , SingleOrDefault 会引发异常:
var sim = _db.Sims.Where(x => x.SimNo.ToLower() == s.SimNo.ToLower()).Where(x => x.Id != s.Id).FirstOrDefault();
所以我会做
private bool UniqueSimNo(string simNo, int id = 0) {
var _db = new MYContext());
return !_db.Sims.Any(x => x.Id != id && x.simNo.ToLower() == simNo.ToLower());
}
我正在使用 FluentValidation 库来创建这样的验证器:
谁能帮我简化这部分代码?
private bool UniqueSimNo(string simNo)
{
MyContext _db = new MyContext();
Sim s = _db.Sims.Where(x => x.SimNo.ToLower() == simNo.ToLower()).SingleOrDefault();
var sim = _db.Sims.Where(x => x.SimNo.ToLower() == s.SimNo.ToLower()).Where(x => x.Id != s.Id).FirstOrDefault();
if (sim == null) return true;
return false;
}
嗯,如果您不将 id 作为参数传递给您的方法,您的代码就没有意义。
我猜您想对新项目 (id = 0) 和现有项目 (id !=0) 使用相同的验证器。
这一行在你的 SingleOrDefault
测试后没有按照你认为的那样做,因为如果有多个项目具有相同的 SimNo , SingleOrDefault 会引发异常:
var sim = _db.Sims.Where(x => x.SimNo.ToLower() == s.SimNo.ToLower()).Where(x => x.Id != s.Id).FirstOrDefault();
所以我会做
private bool UniqueSimNo(string simNo, int id = 0) {
var _db = new MYContext());
return !_db.Sims.Any(x => x.Id != id && x.simNo.ToLower() == simNo.ToLower());
}