<Entity Name="RootCategory">
<Identifiers>
<Identifier Name="CategoryName" TypeName="System.String" />
</Identifiers>
<Methods>
<Method Name="GetRootCategories">
<Parameters>
<Parameter Direction="In" Name="language">
<TypeDescriptor TypeName="System.String" Name="language">
<DefaultValues>
<DefaultValue MethodInstanceName="CategorySpecificFinderInstance" Type="System.String">en-us</DefaultValue>
<DefaultValue MethodInstanceName="CategoryFinderInstance" Type="System.String">en-us</DefaultValue>
</DefaultValues>
</TypeDescriptor>
</Parameter>
<Parameter Direction="Return" Name="GetRootCategoriesResult">
<TypeDescriptor TypeName="Catalogs.ServiceDataSetContract, Catalogs" Name="GetRootCategoriesResult">
<TypeDescriptors>
<TypeDescriptor TypeName="System.Data.DataSet, System.Data, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" Name="Value">
<TypeDescriptors>
<TypeDescriptor TypeName="System.Data.DataTableCollection, System.Data, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" Name="Tables" IsCollection="true">
<TypeDescriptors>
<TypeDescriptor TypeName="System.Data.DataTable, System.Data, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" Name="Categories">
<TypeDescriptors>
<TypeDescriptor TypeName="System.Data.DataRowCollection, System.Data, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" Name="Rows" IsCollection="true">
<TypeDescriptors>
<TypeDescriptor TypeName="System.Data.DataRow, System.Data, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" Name="Categories">
<TypeDescriptors>
<TypeDescriptor TypeName="System.String" IdentifierName="CategoryName" Name="CategoryName" >
<LocalizedDisplayNames>
<LocalizedDisplayName LCID="1033">CategoryName</LocalizedDisplayName>
</LocalizedDisplayNames>
</TypeDescriptor>
<TypeDescriptor TypeName="System.String" Name="DisplayName" >
<LocalizedDisplayNames>
<LocalizedDisplayName LCID="1033">Name</LocalizedDisplayName>
</LocalizedDisplayNames>
</TypeDescriptor>
</TypeDescriptors>
</TypeDescriptor>
</TypeDescriptors>
</TypeDescriptor>
</TypeDescriptors>
</TypeDescriptor>
</TypeDescriptors>
</TypeDescriptor>
</TypeDescriptors>
</TypeDescriptor>
</TypeDescriptors>
</TypeDescriptor>
</Parameter>
</Parameters>
<MethodInstances>
<MethodInstance Type="Finder" ReturnParameterName="GetRootCategoriesResult" ReturnTypeDescriptorName="GetRootCategoriesResult" ReturnTypeDescriptorLevel="0" Name="CategoryFinderInstance" />
<MethodInstance Type="SpecificFinder" ReturnParameterName="GetRootCategoriesResult" ReturnTypeDescriptorName="GetRootCategoriesResult" ReturnTypeDescriptorLevel="0" Name="CategorySpecificFinderInstance" />
</MethodInstances>
</Method>
</Methods>
</Entity>
I have used this definition my self and it is working but remember you cannot use out-of-box BDC controls for this. You need to develop your own controls for these.