代码之家  ›  专栏  ›  技术社区  ›  RubbelDieKatz

数据表编辑器-Field.Options.Where语法

  •  0
  • RubbelDieKatz  · 技术社区  · 6 年前

    我的项目跟踪系统需要一点工作。目前,每个用户都可以给自己分配一堆项目,并跟踪自己在这些项目上的工作时间。

    我试图在我的选项列表中添加一个where条件,人们可以在其中添加自己的时间。目前,人们可以选择所有项目。这对很多项目来说可能有点烦人,所以我想要一个 Where 声明将其选项限制为自己的项目。

        .Field(new Field("ProjectEntry.IdProject")
            .Options(new Options()
                .Table("View_User_Project")
                .Value("IdProject")
                .Label("Name")
                .Where("View_User_Project", "View_User_Project.IdUser", "=", idUser) // TODO Find out what's going on
            )
            .Validator(Validation.NotEmpty())
        )
    

    这个“Where”方法只接受一个参数 Action<Query> 有点争论。我从来没有见过 在哪里? 具有这种语法的语句。


    完整数据库代码:

        var context = HttpContext.Current;
        var idUser = Utility.GetIdUser(context);
        var request = context.Request;
    
        using (var db = Utility.GetDb())
        {
            var editor = new Editor(db, "ProjectEntry", "IdProjectEntry")
                .Model<ProjectEntryModel>("ProjectEntry")
                .Model<ProjectModel>("Project")
                .Field(new Field("ProjectEntry.IdProject")
                    .Options(new Options()
                        .Table("View_User_Project")
                        .Value("IdProject")
                        .Label("Name")
                        .Where("View_User_Project", "View_User_Project.IdUser", "=", idUser) // TODO Find out what's going on
                    )
                    .Validator(Validation.NotEmpty())
                )
                .Field(new Field("ProjectEntry.IdUser"))
                .Field(new Field("ProjectEntry.TimeWorked")
                    .Validator(Validation.NotEmpty())
                    .Validator(Validation.Numeric())
                )
                .Field(new Field("ProjectEntry.TimestampWeek")
                    .Validator(Validation.NotEmpty())
                )
                .LeftJoin("Project", "Project.IdProject", "=", "ProjectEntry.IdProject")
                .Where("ProjectEntry.IdUser", idUser, "=");
            editor.PreCreate += (sender, e) => editor.Field("ProjectEntry.IdUser").SetValue(idUser);
            var response = editor.Process(request).Data();
    
            return Json(response);
        }
    

    A forum post that gave me a little bit of insight

    1 回复  |  直到 6 年前
        1
  •  1
  •   RubbelDieKatz    6 年前

    嗯,那很短。原来您需要一个匿名函数来编辑查询对象。

    例子:

        .Field(new Field("UserProject.IdProject")
            .Options(new Options()
                .Table("View_User_Project")
                .Value("IdProject")
                .Label("Name")
                .Where((q) =>
                    {
                        q.Where("View_User_Project.IdUser", idUser);
                    }
                )
            )
            .Validator(Validation.NotEmpty())
        )