Универсальная база данных Linq - PullRequest
1 голос
/ 07 декабря 2009

Имея функцию, показанную ниже, я могу взять одну таблицу из моей базы данных и написать лямбду, используя метод расширения Where, и в значительной степени построить все остальные случаи, используя простой метод-обертку и предоставив фильтр.

  public void getPeople(Expression<Func<tblPeople, bool>> filter, Action<List<tblPeople>> callback)
            {
                var query = from People in sdContext.tblPeople.Where(filter)
                            select People;


                var DSQuery = (DataServiceQuery<tblPeople>)query;
                DSQuery.BeginExecute(result =>
                {
                    callback(DSQuery.EndExecute(result).ToList<tblPeople>());

                }, null);
            }

Что я действительно хотел бы сейчас сделать, так это написать еще более общий метод, который абстрагирует tblPeople от параметра. Таким образом, у меня могут быть только однострочные методы для всех моих вызовов, по крайней мере те, которые предоставляют списки! Как я могу взять это и построить:

 public void getTable<T>(Expression<Func<T, bool>> filter, Action<List<T>> callback)
            {
                var query = from DB in sdContext.T.Where(filter)
                            select DB;


                var DSQuery = (DataServiceQuery<T>)query;
                DSQuery.BeginExecute(result =>
                {
                    callback(DSQuery.EndExecute(result).ToList<T>());

                }, null);
            }

Возможно ли это!

1 Ответ

0 голосов
/ 07 декабря 2009

Это может сработать ...

public void getTable<T>(Expression<Func<T, bool>> filter, Action<List<T>> callback)
{
    var query = from DB in sdContext.GetTable<T>.Where(filter)
                select DB;


    var DSQuery = (DataServiceQuery<T>)query;
    DSQuery.BeginExecute(result =>
    {
        callback(DSQuery.EndExecute(result).ToList<T>());
    }, null);
}
...