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

DataService で:

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 は正しい値になりますが、Employees の数を変更 (追加または削除) すると、EmpAll は以前と同じ値になります。実際のデータを取得するにはどうすればよいですか?

誰かが何が間違っていると言うことができますか?

4

1 に答える 1

0

多分私は何かが欠けています。

従業員のリストをどこかに置いていると思いますか?または、どのように従業員を追加または削除できますか?

EmpAll が常にコレクションの数を返す読み取り専用プロパティではないのはなぜですか。次に、簡単な方法を取り、従業員を追加または削除するときに、RaisePropertyChanged("EmpAll"); を呼び出します。送信が完了したことがわかったら。

または、「より良い」方法は、ハンドラーをコレクションの itemadded イベントに追加し、そのハンドラーに 1 行の RaisePropertyChanged("EmpAll"); を追加することです。

監視可能なコレクションの場合、イベントはコレクションの変更になります。

ユーザーが従業員を追加または削除したかどうかを知りたい場合は、タイマーでサーバーをポーリングするか、二重サービスを使用する必要があります。

于 2011-03-06T19:04:51.397 に答える