Associations
Hi, I'm using the AdventureWorks BDC example to try to assiociate two entities. The example works, but when I do my modifications, I get the error "Could not find fields to insert all the Identifier Values to correctly execute an Association method." It's possible I've stared myself blind on this xml, but I am not able to find where the missing tags should go.
This is my bdc app def:
<?
xmlversion="1.0"encoding="utf-8"standalone="yes" ?><LobSystemxmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://schemas.microsoft.com/office/2006/03/BusinessDataCatalog BDCMetadata.xsd"
Type="Database"
Version="1.0.0.8"Name="MyLob"
xmlns="http://schemas.microsoft.com/office/2006/03/BusinessDataCatalog">
<Properties>
<PropertyName="WildcardCharacter"Type="System.String">%</Property>
</Properties>
<LobSystemInstances>
<LobSystemInstanceName="MyLobInstance">
<Properties>
<PropertyName="AuthenticationMode"Type="System.String">PassThrough</Property>
<PropertyName="DatabaseAccessProvider"Type="System.String">SqlServer</Property>
<PropertyName="RdbConnection Data Source"Type="System.String">MyServer</Property>
<PropertyName="RdbConnection Initial Catalog"Type="System.String">MyDatabase</Property>
<PropertyName="RdbConnection Integrated Security"Type="System.String">SSPI</Property>
<PropertyName="RdbConnection Pooling"Type="System.String">false</Property>
</Properties>
</LobSystemInstance>
</LobSystemInstances>
<Entities>
<EntityEstimatedInstanceCount="10000"Name="CreditLimit">
<Identifiers>
<IdentifierName="PolicyID"TypeName="System.Int32" />
<IdentifierName="ActorID"TypeName="System.Int32" />
</Identifiers>
<Methods>
<MethodName="GetCreditLimits">
<Properties>
<PropertyName="RdbCommandText"Type="System.String">
select PolicyID, ActorID, BuyerID, BuyerName from dbo.v_CreditLimits where (PolicyID = @PolicyID)
</Property>
<PropertyName="RdbCommandType"Type="System.String">Text</Property>
</Properties>
<FilterDescriptors>
<FilterDescriptorType="Comparison"Name="ID" >
<Properties>
<PropertyName="Comparator"Type="System.String">Equals</Property>
</Properties>
</FilterDescriptor>
<FilterDescriptorType="Wildcard"Name="BuyerName" />
</FilterDescriptors>
<Parameters>
<ParameterDirection="In"Name="@PolicyID">
<TypeDescriptorTypeName="System.Int32"IdentifierName="PolicyID"AssociatedFilter="ID"Name="PolicyID">
<DefaultValues>
<DefaultValueMethodInstanceName="CreditLimitFinderInstance"Type="System.Int32">0</DefaultValue>
</DefaultValues>
</TypeDescriptor>
</Parameter>
<ParameterDirection="Return"Name="CreditLimits">
<TypeDescriptorTypeName="System.Data.IDataReader, System.Data, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"IsCollection="true"Name="CreditLimitsDataReader">
<TypeDescriptors>
<TypeDescriptorTypeName="System.Data.IDataRecord, System.Data, Version=2.0.3600.0, Culture=neutral, ublicKeyToken=b77a5c561934e089"Name="CreditLimitsDataRecord">
<TypeDescriptors>
<TypeDescriptorTypeName="System.Int32"IdentifierName="PolicyID"Name="PolicyID"/>
<TypeDescriptorTypeName="System.Int32"Name="ActorID"/>
<TypeDescriptorTypeName="System.Int32"Name="BuyerID"/>
<TypeDescriptorTypeName="System.String"Name="BuyerName"/>
</TypeDescriptors>
</TypeDescriptor>
</TypeDescriptors>
</TypeDescriptor>
</Parameter>
</Parameters>
<MethodInstances>
<MethodInstanceName="CreditLimitFinderInstance"Type="Finder"ReturnParameterName="CreditLimits" />
<MethodInstanceName="CreditLimitSpecificFinderInstance"Type="SpecificFinder"ReturnParameterName="CreditLimits" />
</MethodInstances>
</Method>
</Methods>
</Entity>
<EntityEstimatedInstanceCount="10000"Name="Policy">
<Properties>
<PropertyName="Title"Type="System.String">PolicyID</Property>
</Properties>
<Identifiers>
<IdentifierName="PolicyID"TypeName="System.Int32" />
<IdentifierName="ActorID"TypeName="System.Int32" />
</Identifiers>
<Methods>
<MethodName="GetPolicies">
<Properties>
<PropertyName="RdbCommandText"Type="System.String">Select ActorID, PolicyID from v_Policies where ActorID = @ActorID</Property>
<PropertyName="RdbCommandType"Type="System.String">Text</Property>
</Properties>
<FilterDescriptors>
<FilterDescriptorType="Comparison"Name="ID" >
<Properties>
<PropertyName="Comparator"Type="System.String">Equals</Property>
</Properties>
</FilterDescriptor>
</FilterDescriptors>
<Parameters>
<ParameterDirection="In"Name="@ActorID">
<TypeDescriptorTypeName="System.Int32"IdentifierName="ActorID"AssociatedFilter="ID"Name="ActorID">
<DefaultValues>
<DefaultValueMethodInstanceName="PolicyFinderInstance"Type="System.Int32">0</DefaultValue>
</DefaultValues>
</TypeDescriptor>
</Parameter>
<ParameterDirection="Return"Name="Policies">
<TypeDescriptorTypeName="System.Data.IDataReader, System.Data, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"IsCollection="true"Name="PolicyDataReader">
<TypeDescriptors>
<TypeDescriptorTypeName="System.Data.IDataRecord, System.Data, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"Name="PolicyDataRecord">
<TypeDescriptors>
<TypeDescriptorTypeName="System.Int32"IdentifierName="ActorID"Name="ActorID" />
<TypeDescriptorTypeName="System.Int32"IdentifierName="PolicyID"Name="PolicyID" />
<TypeDescriptorName="Test"TypeName="System.Int32"/>
</TypeDescriptors>
</TypeDescriptor>
</TypeDescriptors>
</TypeDescriptor>
</Parameter>
</Parameters>
<MethodInstances>
<MethodInstanceName="PolicyFinderInstance"Type="Finder"ReturnParameterName="Policies" />
<MethodInstanceName="policySpecificFinderInstance"Type="SpecificFinder"ReturnParameterName="Policies" />
</MethodInstances>
</Method>
<MethodName="GetCreditLimitsForPolicy">
<Properties>
<PropertyName="RdbCommandText"Type="System.String">
select PolicyID, ActorID, BuyerID, BuyerName from dbo.v_CreditLimits where PolicyID = @PolicyID
</Property>
<PropertyName="RdbCommandType"Type="System.String">Text</Property>
</Properties>
<Parameters>
<ParameterDirection="In"Name="@PolicyID">
<TypeDescriptorTypeName="System.Int32"IdentifierEntityName="CreditLimit"IdentifierName="PolicyID"Name="PolicyID" />
</Parameter>
<ParameterDirection="Return"Name="CreditLimits">
<TypeDescriptorTypeName="System.Data.IDataReader, System.Data, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"IsCollection="true"Name="CreditLimitDataReader">
<TypeDescriptors>
<TypeDescriptorTypeName="System.Data.IDataRecord, System.Data, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"Name="CreditLimitDataRecord">
<TypeDescriptors>
<TypeDescriptorTypeName="System.Int32"IdentifierEntityName="CreditLimit"IdentifierName="PolicyID"Name="PolicyID"/>
<TypeDescriptorTypeName="System.Int32"IdentifierEntityName="CreditLimit"IdentifierName="ActorID"Name="ActorID"/>
<TypeDescriptorTypeName="System.Int32"Name="BuyerID" />
<TypeDescriptorTypeName="System.String"Name="BuyerName"/>
</TypeDescriptors>
</TypeDescriptor>
</TypeDescriptors>
</TypeDescriptor>
</Parameter>
</Parameters>
</Method>
</Methods>
</Entity>
</Entities>
<Associations>
<AssociationAssociationMethodEntityName="Policy"AssociationMethodName="GetCreditLimitsForPolicy"AssociationMethodReturnParameterName="CreditLimits"Name="PolicyToCreditLimit"IsCached="true">
<SourceEntityName="Policy" />
<DestinationEntityName="CreditLimit" />
</Association>
</Associations>
</LobSystem>
What am I missing?

