Как я могу определить EntitySet, к которому относится связанная операция (функция или действие) с данным Microsoft.Odata.Edm.IEdmModel? - PullRequest
1 голос
/ 21 января 2020

У меня есть Microsoft.Odata.Edm.IEdmModel , и я пытаюсь определить, к какому EntitySet относится каждая операция. Но это не представляется возможным. Я пробовал следующее:

var edm = WebApiConfig.GetOdataEdmModel();
var operation = edm.SchemaElements.First(x => (x as IEdmOperation)?.Name == "GetRecentCustomers") as IEdmOperation;
var boundTo = operation.FindParameter("bindingParameter");
var matchingEntitySets = edm.EntityContainer.EntitySets()
                            .Where(x => x.Type.FullTypeName() == boundTo.Type.Definition.FullTypeName())
                            .ToList();

Проблема в том, что MatchEntitySets может иметь более одного результата. Причина в том, что модель OData построена следующим образом:

например,

var builder = new ODataConventionModelBuilder();
builder.EntitySet<BusinessEntity>("Customers");
builder.EntitySet<BusinessEntity>("Vendors");
builder.EntityType<BusinessEntity>()
       .Collection
       .Function(nameof(CustomersController.GetRecentCustomers))
       .ReturnsCollectionFromEntitySet<BusinessEntity>("Customers");

Является ли ответом просто то, что OData не поддерживает более одного набора сущностей с одним и тем же типом модели? Если это так, то почему строитель не защищает от этого?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...