Попытка понять, возможно ли использовать FunctionImport как часть пути.В приведенном ниже примере не используется FunctionImport, и он работает должным образом:
.../MyEntities('MyEntityKey')/MyChildEntities('MyChildEntityKey')/MyChildAction
Однако, когда я решаю использовать FunctionImport, как показано ниже:
.../GetMyEntity('Param1')/MyEntityKey/MyChildEntities('MyChildEntityKey')/MyChildAction
Я получаю The number of keys specified in the URI does not match number of key properties for the resource 'MyEntity'
.
Есть мысли о том, что мне не хватает?Заранее спасибо.
Вот классы, которые я использую;
public class MyServer : IUpdatableContext
{
public IQueryable<MyEntity> MyEntities
{
return GetMyEntities().AsQueryable();
}
[WebGet]
public IQueryable<MyEntity> GetMyEntity(string param1)
{
return GetMyEntities(param1).AsQueryable();
}
}
[DataServiceKey("MyEntityKey")]
public class MyEntity
{
public IEnumerable<MyChildEntity> MyChildEntities
{
get
{
return GetMyChildEntities().AsEnumerable();
}
}
}
[DataServiceKey("MyChildEntityKey")]
public class MyChildEntity
{
[EntityAction("MyChildAction")]
public Guid MyChildAction()
{
return ExecuteMyChildAction();
}
}
и соответствующий им файл .edmx:
<EntityContainer Name="MyServer" m:IsDefaultEntityContainer="true">
<EntitySet Name="MyEntities" EntityType="MyEntity" />
<FunctionImport Name="GetMyEntity" ReturnType="Collection(MyEntity)" EntitySet="MyEntities" m:HttpMethod="GET">
<Parameter Name="param1" Type="Edm.String" />
</FunctionImport>
</EntityContainer>
<EntityType Name="MyEntity">
<Key>
<PropertyRef Name="MyEntityKey" />
</Key>
<Property Name="MyEntityProp" Type="Edm.Int32" />
<NavigationProperty Name="MyChildEntity" Relationship="MyEntity_MyChildEntities" ToRole="MyChildEntities" FromRole="MyEntity"/>
</EntityType>
<EntityType Name="MyChildEntity">
<Key>
<PropertyRef Name="MyChildEntityKey" />
</Key>
<Property Name="MyChildEntityProp" Type="Edm.Int32" />
</EntityType>
<EntitySet Name="MyEntities" EntityType="MyEntity" />
<EntitySet Name="MyChildEntities" EntityType="MyChildEntity" />
<Association Name="MyEntity_MyChildEntities">
<End Type="MyEntity" Role="MyEntity" Multiplicity="1" />
<End Type="MyChildEntity" Role="MyChildEntities" Multiplicity="*" />
</Association>