0

每个人!这是我的问题:如何检索员工数量?在 DomainService 我有:

public IQueryable<employee> GetEmployeesCommon()
{
    return this.ObjectContext. employees
        .Where(t => t. is_record_delete == false)
       ;
}

public int GetNumberOfAllEmployees()
{
    return GetEmployeesCommon()
        .Where(t => t.idtypepc >= 2)
        .Where(t => t.idtypepc <= 11)
        .Count();
}

在数据服务中:

public void GetEmployeesAllEmployees(Action<InvokeOperation<int>> getEmployeesCallback)
{
    Context.GetNumberOfAllEmployees(getEmployeesCallback, null);
}

在 ViewModel 中:

public void GetTechusAllPCs()
{
    EmployeeDataService.GetEmployeesAllEmployees(getEmployeesCallback);
}

private void getEmployeesCallback(InvokeOperation<int> op)
{
        EmpAll = op.Value;
}

private int _empAll;
public int EmpAll
{
    get { return _empAll; }
    set
    {
        _empAll = value;
        RaisePropertyChanged("EmpAll");
    }
}

我在 LoadData() 中调用 GetTechusAllPCs()(在检索到所有实体之后),然后 EmpAll 具有正确的值,但如果更改员工的计数(添加或删除一个)EmpAll 将具有与以前相同的值。如何获取实际数据?

有人可以说有什么问题吗?

4

1 回答 1

0

也许我错过了一些东西。

我假设您将员工名单放在某个地方?或者您如何添加或删除员工?

为什么 EmpAll 不是始终返回集合计数的只读属性。然后要么采取简单的方法,当您添加或删除员工时,请调用 RaisePropertyChanged("EmpAll"); 一旦您知道提交已通过。

或者“更好”的方法是将处理程序添加到集合的 itemadded 事件中,并且在该处理程序中,只需一行 RaisePropertyChanged("EmpAll");

如果它是一个可观察的集合,则该事件将被更改为集合。

如果您想知道是否有任何用户添加或删除了员工,您将不得不在计时器上轮询服务器或使用双工服务。

于 2011-03-06T19:04:51.397 回答