我正在尝试使用以下代码片段完成两件事(来自我的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");
}
}
首先,我想确保每个用户只能看到他所做的事情。这与所讨论的表格上的预处理查询一起完美运行。
下一位旨在确保每个用户只能在某个表中创建一条记录。不幸的是,它似乎在查看整个表格,而不是我所做的只显示用户自己记录的查询。
如何让第二位代码仅限制用户自己的记录,而不是全局表?
答案 0 :(得分:0)
你实际上并没有调用那个查询吗?您的查询基于提供的代码称为Query1,但您似乎没有调用它。我会做类似的事情:
int count = DataWorkspace.ApplicationData.Query1().Count();