0

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

我正在尝试将 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>一种参数。我从未见过Where具有这种语法的语句的示例。

有人可以给我一个例子吗?


完整的数据库代码:

    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);
    }

一个论坛帖子,让我有点见识

4

1 回答 1

1

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

例子:

    .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())
    )
于 2018-08-20T12:57:51.430 回答