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; } }