Выражение запроса с объединением в несколько столбцов вызывает ArgumentException во время выполнения теста, но не во время выполнения - PullRequest
0 голосов
/ 27 апреля 2018

Этот фрагмент кода вызывает ArgumentException, показанный ниже. Что странно, так это то, что это происходит только во время выполнения модульного теста. Когда приложение запускается, этот код запускается и работает. Я думаю, это может означать, что это проблема с данными? Я могу смотреть дальше в этом.

Я пытался настроить анонимные типы в объединении, чтобы они имели одинаковые имена столбцов, делая что-то вроде A = ... и B = ... в обоих анонимных типах, но это ничего не меняет.

Ниже мой запрос:

var query =
  (from account in db.AccountDetails
    join team in db.Teams on new { account.CompanyId, account.TeamCode }
      equals new { teams.CompanyId, teams.TeamCode } into groupedTeams
    from team in groupedTeams.DefaultIfEmpty()
    where account.CompanyId == message.CompanyId && account.ProcessId == message.ProcessId
    select new
    {
      AccountDetail = account,
      Team = groupedTeams.FirstOrDefault()
    }
  );

Исключение:

System.ArgumentException: Expression of type '' cannot be used for parameter of type 'System.Collections.Generic.IEnumerable`1[Packing.ColdCamperEtl.Business.Data.Elmer.Models.Tax]' of method 'System.Linq.IQueryable`1[<>f__AnonymousType0`2[Packing.ColdCamperEtl.Business.Data.Elmer.Models.AccountDetail,System.Collections.Generic.IEnumerable`1[Packing.ColdCamperEtl.Business.Data.Elmer.Models.Tax]]] GroupJoin[AccountDetail,Tax,<>f__AnonymousType1`2,<>f__AnonymousType0`2](System.Linq.IQueryable`1[Packing.ColdCamperEtl.Business.Data.Elmer.Models.AccountDetail], System.Collections.Generic.IEnumerable`1[Packing.ColdCamperEtl.Business.Data.Elmer.Models.Tax], System.Linq.Expressions.Expression`1[System.Func`2[Packing.ColdCamperEtl.Business.Data.Elmer.Models.AccountDetail,<>f__AnonymousType1`2[System.String,System.String]]], System.Linq.Expressions.Expression`1[System.Func`2[Packing.ColdCamperEtl.Business.Data.Elmer.Models.Tax,<>f__AnonymousType1`2[System.String,System.String]]], System.Linq.Expressions.Expression`1[System.Func`3[Packing.ColdCamperEtl.Business.Data.Elmer.Models.AccountDetail,System.Collections.Generic.IEnumerable`1[Packing.ColdCamperEtl.Business.Data.Elmer.Models.Tax],<>f__AnonymousType0`2[Packing.ColdCamperEtl.Business.Data.Elmer.Models.AccountDetail,System.Collections.Generic.IEnumerable`1[Packing.ColdCamperEtl.Business.Data.Elmer.Models.Tax]]]])'
   at System.Linq.Expressions.Expression.ValidateOneArgument(MethodBase method, ExpressionType nodeKind, Expression arg, ParameterInfo pi)
   at System.Linq.Expressions.Expression.ValidateArgumentTypes(MethodBase method, ExpressionType nodeKind, ReadOnlyCollection`1& arguments)
   at System.Linq.Expressions.Expression.Call(Expression instance, MethodInfo method, IEnumerable`1 arguments)
   at System.Linq.Queryable.GroupJoin[TOuter,TInner,TKey,TResult](IQueryable`1 outer, IEnumerable`1 inner, Expression`1 outerKeySelector, Expression`1 innerKeySelector, Expression`1 resultSelector)

Почему это происходит?

...