LINQ выберите тип возврата - PullRequest
0 голосов
/ 18 марта 2012

в своем классе обслуживания домена я хочу вернуть часть моего объекта, но ничего не возвращает.

Код Silverlight:

private void button2_Click(object sender, RoutedEventArgs e)
{
     LoadOperation<Employees> loadOpKKM = this._employeeContext.Load(this._employeeContext.GetEmployeesById2Query(1));
     loadOpKKM.Completed += new EventHandler(loadOpKKM_Completed);
}

void loadOpKKM_Completed(object sender, EventArgs e)
{
     MessageBox.Show(loadOpKKM.Entities.Count().ToString());
}

Класс обслуживания домена:

public IQueryable<Employees> GetEmployeesById2(int employeeId)
{    
    var query = from s in ObjectContext.Employees
                 where (s.EmployeeID == employeeId)
                 select new Employees()
                 {
                    Address = s.Address
                 };

    return query;
}

где я делаю не так?

Ответы [ 3 ]

0 голосов
/ 19 марта 2012

У вас не должно быть доступа к loadOpKKM внутри loadOpKKM_Completed, как показано. Он выходит за рамки этого метода (и не должен компилироваться, если у вас нет другого свойства с тем же именем).

Я предполагаю, что вы на самом деле получаете доступ к другому свойству loadOpKKM на своей странице (оно будет пустым, поскольку оно не является временным загруженным). Проверьте файл конструктора для этой страницы и посмотрите, есть ли у вас свойство / элемент управления с именем loadOpKKM.

Если нет, перечислите весь код страницы (включая файл дизайнера).

0 голосов
/ 02 мая 2013

Как сказал @Hitech Magic, loadOpKKM выходит за рамки этого метода.

попробуйте использовать его так:

private void button2_Click(object sender, RoutedEventArgs e)
{
     LoadOperation<Employees> loadOpKKM = this._employeeContext.Load(this._employeeContext.GetEmployeeByIDQuery(1));
     loadOpKKM.Completed += new EventHandler(loadOpKKM_Completed);
}

void loadOpKKM_Completed(object sender, EventArgs e)
{
     LoadOperation<Employees> loadOpKKM = (LoadOperation<Employees>)sender;
     if(loadOpKKM != null)
     {
         MessageBox.Show(loadOpKKM.Entities.Count().ToString());
     }
     else
     {
         //TODO
     }
}
0 голосов
/ 19 марта 2012

Как и Сильверминг, GertArnold сказал, что вы должны сначала проверить, правильно ли установлена ​​ваша таблица.

private void button2_Click(object sender, RoutedEventArgs e)
{
     LoadOperation<Employees> loadOpKKM = this._employeeContext.Load(this._employeeContext.GetEmployeeByIDQuery(1));
     loadOpKKM.Completed += new EventHandler(loadOpKKM_Completed);
}

void loadOpKKM_Completed(object sender, EventArgs e)
{
     MessageBox.Show(loadOpKKM.Entities.Count().ToString());
}


[Query(IsComposable=false)]
public Employees GetEmployeeByID(int employeeID)
{
    return this.ObjectContext.Employees.Single(c => c.EmployeeID == employeeID);
}

Проверьте службу домена, чтобы убедиться, что вы не сделали никаких ошибок или опечаток

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...