尝试在c#类中引用查询

时间:2015-04-15 14:14:56

标签: c# sql visual-studio visual-studio-lightswitch lightswitch-2013

我正在尝试使用以下代码片段完成两件事(来自我的Lightswitch 2013解决方案的服务器项目中的ApplicationDataService.lsml.cs)。

partial void Query1_PreprocessQuery(ref IQueryable<CandidateBasic> query)
{
    query = from item in query where item.CreatedBy == this.Application.User.Name select item;
}

partial void CandidateBasics_Validate(CandidateBasic entity, EntitySetValidationResultsBuilder results)
{
    var newcandidateCount = this.DataWorkspace.ApplicationData.Details.GetChanges().AddedEntities.OfType<CandidateBasic>().Count();
    var databasecandidateCount = this.CandidateBasics.GetQuery().Execute().Count();

    const int maxcandidateCount = 1;

    if (newcandidateCount + databasecandidateCount > maxcandidateCount)
    {
        results.AddEntityError("Error: you are only allowed to have one candidate record");
    }
}

首先,我想确保每个用户只能看到他所做的事情。这与所讨论的表格上的预处理查询一起完美运行。

下一位旨在确保每个用户只能在某个表中创建一条记录。不幸的是,它似乎在查看整个表格,而不是我所做的只显示用户自己记录的查询。

如何让第二位代码仅限制用户自己的记录,而不是全局表?

1 个答案:

答案 0 :(得分:0)

你实际上并没有调用那个查询吗?您的查询基于提供的代码称为Query1,但您似乎没有调用它。我会做类似的事情:

int count = DataWorkspace.ApplicationData.Query1().Count();