@@ -177,6 +177,7 @@ void AppendEntityKeysFromConvention( StringBuilder builder )
177177
178178 var useParentheses = Context . UrlKeyDelimiter == Parentheses ;
179179 var keySeparator = ',' ;
180+ var keyAsSegment = false ;
180181
181182 if ( useParentheses )
182183 {
@@ -185,6 +186,7 @@ void AppendEntityKeysFromConvention( StringBuilder builder )
185186 else
186187 {
187188 keySeparator = '/' ;
189+ keyAsSegment = true ;
188190 builder . Append ( keySeparator ) ;
189191 }
190192
@@ -199,7 +201,7 @@ void AppendEntityKeysFromConvention( StringBuilder builder )
199201 for ( var i = 1 ; i < entityKeys . Length ; i ++ )
200202 {
201203 builder . Append ( keySeparator ) ;
202- ExpandParameterTemplate ( builder , entityKeys [ i ] , parameterKeys [ i ] . Name ) ;
204+ ExpandParameterTemplate ( builder , entityKeys [ i ] , parameterKeys [ i ] . Name , keyAsSegment ) ;
203205 }
204206 }
205207
@@ -280,13 +282,16 @@ void AppendParametersFromConvention( StringBuilder builder, IEdmOperation operat
280282 }
281283 }
282284
283- void ExpandParameterTemplate ( StringBuilder template , IEdmStructuralProperty key ) => ExpandParameterTemplate ( template , key . Type , key . Name ) ;
285+ void ExpandParameterTemplate ( StringBuilder template , IEdmStructuralProperty key ) =>
286+ ExpandParameterTemplate ( template , key . Type , key . Name , keyAsSegment : false ) ;
284287
285- void ExpandParameterTemplate ( StringBuilder template , IEdmStructuralProperty key , string name ) => ExpandParameterTemplate ( template , key . Type , name ) ;
288+ void ExpandParameterTemplate ( StringBuilder template , IEdmStructuralProperty key , string name , bool keyAsSegment = false ) =>
289+ ExpandParameterTemplate ( template , key . Type , name , keyAsSegment ) ;
286290
287- void ExpandParameterTemplate ( StringBuilder template , IEdmOperationParameter parameter , string name ) => ExpandParameterTemplate ( template , parameter . Type , name ) ;
291+ void ExpandParameterTemplate ( StringBuilder template , IEdmOperationParameter parameter , string name ) =>
292+ ExpandParameterTemplate ( template , parameter . Type , name , keyAsSegment : false ) ;
288293
289- void ExpandParameterTemplate ( StringBuilder template , IEdmTypeReference typeReference , string name )
294+ void ExpandParameterTemplate ( StringBuilder template , IEdmTypeReference typeReference , string name , bool keyAsSegment )
290295 {
291296 Contract . Requires ( template != null ) ;
292297 Contract . Requires ( typeReference != null ) ;
@@ -299,7 +304,7 @@ void ExpandParameterTemplate( StringBuilder template, IEdmTypeReference typeRefe
299304 template . Append ( name ) ;
300305 template . Append ( "}" ) ;
301306
302- if ( Context . RouteTemplateGeneration == Server )
307+ if ( Context . RouteTemplateGeneration == Server || keyAsSegment )
303308 {
304309 return ;
305310 }
0 commit comments