Entity Framework и вложенные лямбда-выражения - PullRequest
1 голос
/ 10 декабря 2010

Я только начал использовать лямбда-выражения, и мне действительно нравится ярлык. Мне также нравится тот факт, что у меня есть область внутри лямбда-метода. У меня проблемы с вложением лямбд. Вот что я пытаюсь сделать:

public void DoSomeWork()
{
  MyContext context = new MyDomainContext();
  context.GetDocumentTypeCount(ci.CustomerId, io =>
  {
    if (io.HasError)
    {
       // Handle error
    }
    // Do some work here
    //         ...        
    // make DB call to get data
    EntityQuery<AppliedGlobalFilter> query =
      from a in context.GetAppliedGlobalFiltersQuery()
      where a.CustomerId == ci.CustomerId && a.FilterId == 1
      select a;

    context.Load<AppliedGlobalFilter>(query, lo =>
      {
        if (lo.HasError)
        {
        }

         **// Do more work in this nested lambda.  
         // Get compile time error here**

     }
                  }, null);
      }, null);


}

Вторая лямбда, где я получаю следующую ошибку времени компиляции:

Невозможно преобразовать лямбда-выражение в тип 'System.ServiceModel.DomainService.Client.LoadBehavior', поскольку оно не является типом делегата

Компилятор выбирает неправильную перегрузку для метода Load, хотя я использую то же переопределение, что и в предыдущей Lambda.

Это потому что я пытаюсь вложить? Или у меня что-то не так?

Спасибо,

-Скотт

Ответы [ 2 ]

0 голосов
/ 10 декабря 2010

Я понимаю, что это не тот ответ, который вам нужен, но я предлагаю предостеречь насчет длинных и / или вложенных лямбд.Они работают, но они часто затрудняют чтение / сопровождение кода другими разработчиками.Я пытаюсь ограничить длину лямбды тремя утверждениями без вложенности.

0 голосов
/ 10 декабря 2010

Нашел проблему, как описано в моем комментарии выше. Я сейчас вернусь на работу - красное лицо и все ....

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