Имя "Контейнер" как объекта недопустимо в OData Web API.

Мой список сущностей включает в себя один под названием "Контейнер". (Моя компания много работает с контейнерами, и это довольно "термин в камне".)

Поэтому, когда я смоделировал свои данные для них, я, естественно, назвал их контейнерами.

Это означает, что у меня есть класс под названием Container,

Я только что закончил подключать все мои контроллеры для OData Web API, и когда я пытаюсь скомпилировать клиент, используя его, я получаю сообщение об ошибке. (Я использую пакет nuget клиента службы данных WCF.)

Ошибка в том, что есть моя сущность Container частичный класс и другой частичный класс, который содержит все коллекции корневого уровня, также называемые Container, (ПРИМЕЧАНИЕ: я не получаю эту ошибку для моей службы, которая выполняет те же объекты через версию OData служб данных WCF.)

Итак, мой вопрос: есть ли способ, чтобы сущность называлась Container и выставить его через ODI Web Api? (и не получить клиенту ошибки времени компиляции).

ПРИМЕЧАНИЕ. Если вы попытаетесь воспроизвести это, ошибка произойдет, если объект с именем "Контейнер" имеет связь с чем-то, что также является корневым элементом (поэтому он включен в класс DataServiceContext с именем "Cntainer". Например, если Контейнеры имеет список возможных контейнерных типов, и есть корневой список контейнерных типов, тогда классы-члены пытаются объединиться, и возникает конфликт.

1 ответ

Решение

Оказывается, ODataModelBuilder (который вы используете для определения всех ваших наборов сущностей) имеет свойство ContainerName.

Настройка, которая дает вам другое имя, чем по умолчанию "Контейнер"

ODataModelBuilder builder = new ODataConventionModelBuilder();
builder.ContainerName = "YourCustomContainerNameHere";
Другие вопросы по тегам