У меня проблема с использованием моей службы OData V4 в ASP.NET при использовании целых ключей. Я не использую Entity Framework, так как получаю данные из службы SOAP.Почему мой идентификатор OData V4 не работает на моем ASP.NET-сервере?
Вот мой класс данных:
public class RecipeDto
{
public RecipeDto();
public RecipeDto(string name);
public RecipeDto(int ident);
public string Description { get; set; }
public int Ident { get; set; }
public string Name { get; set; }
public List<RecipeVersionDto> Versions { get; set; }
}
И я поставил свой ключ с помощью текучего API:
var rtdto = builder.EntitySet<RecipeTemplateDto>("AgentConfigTemplates").EntityType
.HasKey(r => r.Ident)
.HasMany(r => r.Versions);
Вот мои метаданные на моей службе:
<EntityType Name="RecipeTemplateDto">
<Key>
<PropertyRef Name="Ident"/>
</Key>
<Property Name="Ident" Type="Edm.Int32" Nullable="false"/>
<Property Name="Description" Type="Edm.String"/>
<Property Name="Name" Type="Edm.String"/>
<NavigationProperty Name="Versions" Type="Collection(Ifmdatalink.Linerecorder.Backend.PlugIn.dto.RecipeTemplateVersionDto)"/>
</EntityType>
Теперь я будет ожидать получить первую запись моего объекта, заданного с помощью этого запроса:
GET http://localhost:13917/my.svc/AgentConfigTemplates(1)
Но я всегда получаю полный список.
Почему это происходит и как я могу получить первую запись?
Должен ли я каким-то образом расширить мой контроллер odata?
Если я поставлю свой ключ в кавычки, я получаю плохой запрос.