我正在使用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;
}
答案 0 :(得分:0)
好吧,如果你没有将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());
}