Ef fluent api FluentValidation:如何简化此代码?
我使用FluentValidation库创建如下验证程序: 请任何人帮我简化这部分代码Ef fluent api FluentValidation:如何简化此代码?,ef-fluent-api,Ef Fluent Api,我使用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.Si
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());
}