2016-06-24 17 views
0

をスロー「が含ま」。EF7/LINQのは、ネストされたオブジェクトを持つクエリは、私は以下のクラスを持っている例外

フィルタにはactivityIds(filterList)のリストがあります。次のクエリはSystem.InvalidOperationException

ErrorMessage

をスロー

"配列は、複数の要素が含まれています" と私は理由を理解していません。

var filterList = new List<int> {1}; 

var data = _db.ActivityEntry 
       .Include(x => x.CostCenter) 
       .Where(x => filterList.Contains(x.CostCenter.ActivityId)) 
       .ToList(); 

CostCenterが正常に動作しているネストされたオブジェクトを使用していない別のWHERE声明。

.Where(x =>filterList.Contains(x.CostCenterId)) 

は、私がCostCenter対象に活動-IDの照会に別の構文を使用する必要がありますか?

スタックトレース:

BEI System.Linq.Enumerable.Single [TSOURCE(IEnumerableを1 source) bei Microsoft.Data.Entity.Query.EntityQueryModelVisitor.<>c__DisplayClass79_0 1.b__0(IEnumerableを1 ps, IQuerySource qs) bei Microsoft.Data.Entity.Query.EntityQueryModelVisitor.BindMemberExpressionCore[TResult](MemberExpression memberExpression, IQuerySource querySource, Func 3 memberBinder) BEI Microsoft.Data.Entity.Query.EntityQueryModelVisitor.BindMemberExpression [ TResult(MemberExpression memberExpression、IQuerySource querySourceの、のFunc 3 memberBinder) bei Microsoft.Data.Entity.Query.EntityQueryModelVisitor.BindMemberExpression(MemberExpression memberExpression, Action 2 memberBinder) BEI Microsoft.Data.Entity.Query.ExpressionVisitors.Internal.RequiresMaterializationExpressionVisitor.VisitMember(MemberExpression memberExpression) BEI System.Linq.Expressions.MemberExpression.Accept(ExpressionVisitor訪問者) BEI Microsoft.Data.Entity.Query.ExpressionVisitors.ExpressionVisitorBase.Visit(式発現)Remotion.Linq.Clauses.ResultOperators.ContainsResultOperator.TransformExpressions BEI (機能2 transformation) bei Remotion.Linq.QueryModel.TransformExpressions(Func 2変換) BEI Microsoft.Data.Entity.Query.ExpressionVisitors。 Internal.RequiresMaterializationExpressionVisitor.VisitSubQuery(subQueryExpression subQueryExpression) BEI Remotion.Linq.Clauses.Expressions.SubQueryExpression.Accept(ExpressionVisitor訪問者) BEI Microsoft.Data.Entity.Query.ExpressionVisitors.ExpressionVisitorBase.Visit(式expression) BEI Remotion.Linq .Clauses.WhereClause.TransformExpressions(Func 2 transformation) bei Remotion.Linq.QueryModel.TransformExpressions(Func 2変換) bei Microsoft.Data.Entity.Query.ExpressionVisitors.Internal.RequiresMaterializatio nExpressionVisitor.FindQuerySourcesRequiringMaterialization(QueryModel queryModel) BEIのMicrosoft.Data.Entity.Query.QueryCompilationContext.FindQuerySourcesRequiringMaterialization(EntityQueryModelVisitor queryModelVisitor、QueryModel queryModel) BEI Microsoft.Data.Entity.Query.EntityQueryModelVisitor.CreateQueryExecutor [TResult](QueryModel queryModel) BEIマイクロソフト.Data.Entity.Storage.Database.CompileQuery [TResult](QueryModel queryModel) ---列挙するには、列挙型を使用してください。--- bei Microsoft.Data.Entity.Query.Internal.QueryCompiler 。 <> c__DisplayClass18_0 1.<CompileQuery>b__0() bei Microsoft.Data.Entity.Query.Internal.CompiledQueryCache.GetOrAddQuery[TResult](Object cacheKey, Funcコンパイラ) bei Microsoft.Data.Entity.Query.Internal.QueryCompiler。CompileQuery [TResult](式クエリ) bei Microsoft.Data.Entity.Query.Internal.QueryCompiler.Execute [式](式クエリ) bei Microsoft.Data.Entity.Query.Internal.EntityQueryProvider.Execute [式式) BEIはCで1.GetEnumerator() bei System.Collections.Generic.List 1..ctor(IEnumerableを1 collection) bei System.Linq.Enumerable.ToList[TSource](IEnumerable 1ソース) BEI zetvnext.application.Services.ReportService.GetCostCenterReportData(FilterDtoフィルタ)Remotion.Linq.QueryableBase:\ソース\ zetvnext \ SRC \ zetvnext.application \サービス\ ReportService.cs:CでZeile 86 BEI zetvnext.tests.ReportServiceTests.Test_Report_Data():\ソース\ zetvnext \テスト\ zetvnext.tests \ ReportServiceTests.cs:Zeile 142

+0

ActivityEntryにはEmployeeプロパティが含まれていないようです。私はそれが問題だとは思っていませんが、他に何も表示されていないのだろうかと思っています。:-) –

+0

上記のクエリを*構築するときには通常エラーは発生しません。 'ToList()'を呼び出すなどして*実行すると起こります。引用された特定の例外は、あなたが 'Single()'から得ようとしている例外です。結果がどのように具体化されたか(つまり、クエリの結果がどのように使用されるか)を教えてください。 –

+0

@Gary McGill従業員を追加しました。(ここで私がSOに投稿したときに質問を理解するのに必要な部分のみを含めるようにしました)+ Added ToList() - これを逃しました - 例外は実行時にスローされます。 – Jetro223

答えて

関連する問題