public override ViewValidator.DbExpressionEntitySetInfo Visit(
                DbNewInstanceExpression expression)
            {
                Check.NotNull <DbNewInstanceExpression>(expression, nameof(expression));
                ViewValidator.DbExpressionMemberCollectionEntitySetInfo collectionEntitySetInfo = this.VisitExpressionList(expression.Arguments);
                StructuralType edmType = expression.ResultType.EdmType as StructuralType;

                if (collectionEntitySetInfo == null || edmType == null)
                {
                    return((ViewValidator.DbExpressionEntitySetInfo)null);
                }
                ViewValidator.DbExpressionStructuralTypeEntitySetInfo setInfos = new ViewValidator.DbExpressionStructuralTypeEntitySetInfo();
                int index = 0;

                foreach (ViewValidator.DbExpressionEntitySetInfo entitySetInfo in collectionEntitySetInfo.entitySetInfos)
                {
                    setInfos.Add(edmType.Members[index].Name, entitySetInfo);
                    ++index;
                }
                if (expression.ResultType.EdmType.BuiltInTypeKind == BuiltInTypeKind.AssociationType)
                {
                    this.ValidateEntitySetsMappedForAssociationSetMapping(setInfos);
                }
                return((ViewValidator.DbExpressionEntitySetInfo)setInfos);
            }
            private void ValidateEntitySetsMappedForAssociationSetMapping(
                ViewValidator.DbExpressionStructuralTypeEntitySetInfo setInfos)
            {
                AssociationSet set   = this._setMapping.Set as AssociationSet;
                int            index = 0;

                if (!setInfos.SetInfos.All <KeyValuePair <string, ViewValidator.DbExpressionEntitySetInfo> >((Func <KeyValuePair <string, ViewValidator.DbExpressionEntitySetInfo>, bool>)(it =>
                {
                    if (it.Value != null)
                    {
                        return(it.Value is ViewValidator.DbExpressionSimpleTypeEntitySetInfo);
                    }
                    return(false);
                })) || setInfos.SetInfos.Count <KeyValuePair <string, ViewValidator.DbExpressionEntitySetInfo> >() != 2)
                {
                    return;
                }
                foreach (ViewValidator.DbExpressionSimpleTypeEntitySetInfo typeEntitySetInfo in setInfos.SetInfos.Select <KeyValuePair <string, ViewValidator.DbExpressionEntitySetInfo>, ViewValidator.DbExpressionEntitySetInfo>((Func <KeyValuePair <string, ViewValidator.DbExpressionEntitySetInfo>, ViewValidator.DbExpressionEntitySetInfo>)(it => it.Value)))
                {
                    AssociationSetEnd associationSetEnd = set.AssociationSetEnds[index];
                    EntitySet         entitySet         = associationSetEnd.EntitySet;
                    if (!entitySet.Equals((object)typeEntitySetInfo.EntitySet))
                    {
                        this._errors.Add(new EdmSchemaError(Strings.Mapping_EntitySetMismatchOnAssociationSetEnd_QueryView((object)typeEntitySetInfo.EntitySet.Name, (object)entitySet.Name, (object)associationSetEnd.Name, (object)this._setMapping.Set.Name), 2074, EdmSchemaErrorSeverity.Error, this._setMapping.EntityContainerMapping.SourceLocation, this._setMapping.StartLineNumber, this._setMapping.StartLinePosition));
                    }
                    ++index;
                }
            }