【问题标题】:FluentValidation: how to simplify this code?FluentValidation:如何简化这段代码?
【发布时间】:2018-02-13 11:56:56
【问题描述】:

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

【问题讨论】:

    标签: ef-fluent-api


    【解决方案1】:

    好吧,如果您不将 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()); 
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-03-24
      • 2021-04-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-21
      • 1970-01-01
      • 2019-08-10
      相关资源
      最近更新 更多