public BindingPathConfiguration <TTargetType> HasSinglePath <TTargetType>( Expression <Func <TStructuralType, TTargetType> > pathExpression, bool required, bool contained) where TTargetType : class { if (pathExpression == null) { throw Error.ArgumentNull("pathExpression"); } PropertyInfo pathProperty = PropertySelectorVisitor.GetSelectedProperty(pathExpression); IList <MemberInfo> bindingPath = new List <MemberInfo>(_bindingPath); bindingPath.Add(pathProperty); StructuralTypeConfiguration <TTargetType> target; if (contained) { target = _modelBuilder.EntityType <TTargetType>(); if (required) { _structuralType.ContainsRequired(pathExpression); } else { _structuralType.ContainsOptional(pathExpression); } } else { target = _modelBuilder.ComplexType <TTargetType>(); _structuralType.ComplexProperty(pathExpression).OptionalProperty = !required; } return(new BindingPathConfiguration <TTargetType>(_modelBuilder, target, _navigationSource, bindingPath)); }