Как посчитать элементы в объекте и отправить его в ViewModel с помощью RIA Services? - PullRequest
0 голосов
/ 03 марта 2011

все! Вот мой вопрос: Как я могу получить количество сотрудников? В 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");
    }
}

Я вызываю GetTechusAllPCs () в LoadData () (после того, как все сущности извлечены), и затем EmpAll имеет правильное значение, но если изменение количества Сотрудников (добавление или удаление одного), EmpAll будет иметь то же значение, что и раньше. Как я могу получить фактические данные?

Может кто-нибудь сказать, что не так?

1 Ответ

0 голосов
/ 06 марта 2011

Может быть, я что-то упускаю.

Я предполагаю, что вы где-то размещаете список сотрудников?или как можно добавить или удалить сотрудника?

Почему EmpAll не является свойством только для чтения, которое всегда возвращает счетчик коллекции.Затем либо воспользуйтесь легким выходом, а когда вы добавите или удалите сотрудника, вызовите RaisePropertyChanged ("EmpAll");как только вы узнаете, что отправка прошла.

Или «лучшим» способом было бы добавить обработчик к событию itemadded коллекции и в этом обработчике просто иметь одну строку RaisePropertyChanged ("EmpAll");

Если это наблюдаемая коллекция, событие будет изменено коллекцией.

Если вы хотите узнать, добавил ли какой-либо пользователь или удалил сотрудника, вам придется либо опросить сервер по таймеру, либо использоватьдуплексный сервис.

...