@@ -55,13 +55,16 @@ public void Crate_creates_store_function_for_complex_type_function_import()
5555 var model = new DbModelBuilder ( )
5656 . Build ( new DbProviderInfo ( "System.Data.SqlClient" , "2012" ) ) ;
5757
58+ var enumType = EnumType . Create ( "TestEnum" , "TestNs" , PrimitiveType . GetEdmPrimitiveType ( PrimitiveTypeKind . Int32 ) , false , new EnumMember [ ] { EnumMember . Create ( "foo" , 1 , null ) } , null ) ;
59+
5860 var complexType = ComplexType . Create ( "CT" , "ns" , DataSpace . CSpace ,
5961 new [ ]
6062 {
6163 EdmProperty . Create ( "Street" ,
6264 TypeUsage . CreateDefaultTypeUsage ( PrimitiveType . GetEdmPrimitiveType ( PrimitiveTypeKind . String ) ) ) ,
6365 EdmProperty . Create ( "ZipCode" ,
6466 TypeUsage . CreateDefaultTypeUsage ( PrimitiveType . GetEdmPrimitiveType ( PrimitiveTypeKind . Int32 ) ) ) ,
67+ EdmProperty . Create ( "MyEnum" , TypeUsage . CreateDefaultTypeUsage ( enumType ) )
6568 } ,
6669 null ) ;
6770
@@ -87,6 +90,50 @@ public void Crate_creates_store_function_for_complex_type_function_import()
8790 Assert . False ( storeFunction . IsComposableAttribute ) ;
8891 }
8992
93+ [ Fact ]
94+ public void Crate_creates_store_function_for_complex_type_withEnum_in_TableValuedFunction ( )
95+ {
96+ var model = new DbModelBuilder ( )
97+ . Build ( new DbProviderInfo ( "System.Data.SqlClient" , "2012" ) ) ;
98+
99+ var enumType = EnumType . Create ( "TestEnum" , "TestNs" , PrimitiveType . GetEdmPrimitiveType ( PrimitiveTypeKind . Int32 ) , false , new EnumMember [ ] { EnumMember . Create ( "foo" , 1 , null ) } , null ) ;
100+
101+ var complexType = ComplexType . Create ( "CT" , "ns" , DataSpace . CSpace ,
102+ new [ ]
103+ {
104+ EdmProperty . Create ( "Street" ,
105+ TypeUsage . CreateDefaultTypeUsage ( PrimitiveType . GetEdmPrimitiveType ( PrimitiveTypeKind . String ) ) ) ,
106+ EdmProperty . Create ( "ZipCode" ,
107+ TypeUsage . CreateDefaultTypeUsage ( PrimitiveType . GetEdmPrimitiveType ( PrimitiveTypeKind . Int32 ) ) ) ,
108+ EdmProperty . Create ( "MyEnum" , TypeUsage . CreateDefaultTypeUsage ( enumType ) )
109+ } ,
110+ null ) ;
111+
112+ var functionDescriptor =
113+ new FunctionDescriptor (
114+ "f" ,
115+ new [ ]
116+ { new ParameterDescriptor ( "p1" , PrimitiveType . GetEdmPrimitiveType ( PrimitiveTypeKind . String ) , null , false ) } ,
117+ new EdmType [ ] { complexType } ,
118+ "ResultCol" ,
119+ "dbo" ,
120+ StoreFunctionKind . TableValuedFunction ,
121+ isBuiltIn : null ) ;
122+
123+ var storeFunction = new StoreFunctionBuilder ( model , "docs" , "ns" ) . Create ( functionDescriptor ) ;
124+
125+ Assert . Equal (
126+ BuiltInTypeKind . CollectionType ,
127+ storeFunction . ReturnParameter . TypeUsage . EdmType . BuiltInTypeKind ) ;
128+
129+ Assert . Equal ( 1 , storeFunction . Parameters . Count ) ;
130+ Assert . Equal ( "p1" , storeFunction . Parameters [ 0 ] . Name ) ;
131+ Assert . Equal ( "nvarchar(max)" , storeFunction . Parameters [ 0 ] . TypeName ) ;
132+ Assert . Equal ( ParameterMode . In , storeFunction . Parameters [ 0 ] . Mode ) ;
133+ Assert . True ( storeFunction . IsComposableAttribute ) ;
134+ }
135+
136+
90137 [ Fact ]
91138 public void Crate_creates_store_function_for_enum_type_function_import ( )
92139 {
0 commit comments