: Не удалось найти IEdmType для 'microsoft.management.services.api.groupPolicyObjectFile' - PullRequest
1 голос
/ 01 июля 2019

Я создаю действие, которое выполняет объект ODataActionParameter.Когда я создаю свой конструктор моделей, я хотел бы, чтобы параметр, необходимый для получения созданной мной сущности, выдает «Нет. IEdmType не найден для« microsoft.management.services.api.groupPolicyObjectFile ».Когда параметр является строковым типом, он работает нормально.Кто-нибудь видел эту ошибку IEdmType раньше?

Я пробовал entityparameter, collectionparameter и параметр для моего построителя модели.

public void Configure(IContext context, ODataConventionModelBuilder modelBuilder)
{
        context.IfNullThrow(nameof(context));
        modelBuilder.IfNullThrow(nameof(context));

        modelBuilder.EntityType<GroupPolicyObjectFile>();
        modelBuilder.EntityType<GroupPolicyMigrationReport>();
        modelBuilder.EntityType<GroupPolicySettingMapping>();

        modelBuilder.EntityType<DeviceManagement>().Action("analyzeGroupPolicyObjectFile").Parameter<GroupPolicyObjectFile>("groupPolicyObjectFile");

    }

Вот объявление сущности, которую я хотел бы использовать:

[MinimumSupportedVersion(ServiceVersions.ExperimentalStart)]
[ODataDescription("The Group Policy Object file uploaded by admin.")]
[ODataCapabilities(supportsSkip: true, supportsTop: true)]
[GraphEntity(isMaster: true, AddressUrl = Constants.ServiceEndpoints.GPAnalyticsAdminService)]
[DataInventoryClass(Owner = Constants.Service.OwnerTeamAlias, DataStore = DataStore.DocDB, DataClassification = DataClassification.OII)]
public sealed class GroupPolicyObjectFile: GraphEntity

Действие здесь:

[ODataRoute("analyzeGroupPolicyObjectFile")]     
[AuthorizeApplicationPermissionScopes(new string[] { DelegatedAppPermissionScopes.DeviceManagementConfiguration.ReadWriteAll }, new string[] { DelegatedAppPermissionScopes.DeviceManagementConfiguration.ReadWriteAll })]
[ODataParameterDescription("groupPolicyObjectFile", "Create group policy migration report")]
[HttpPost]
    public async Task<IHttpActionResult> AnalyzeGroupPolicyObjectFile(ODataActionParameters parameters)
    {

1 Ответ

0 голосов
/ 02 июля 2019

Вам необходимо использовать EntityParameter вместо Parameter для параметров сущности:

modelBuilder.EntityType<DeviceManagement>().Action("analyzeGroupPolicyObjectFile").EntityParameter<GroupPolicyObjectFile>("groupPolicyObjectFile");

Если вам нужна коллекция сущностей в качестве параметра, используйте CollectionEntityParameter

См.: http://odata.github.io/WebApi/#04-07-action-parameter-support

...