FluentValidation:如何简化此代码?

时间:2018-02-13 11:56:56

标签: fluentvalidation

我正在使用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;
    }

1 个答案:

答案 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()); 

}