Имя "Контейнер" как объекта недопустимо в 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";