【问题标题】:Name of 'Container' as an entity is not allowed in Web API ODataWeb API OData 中不允许将“容器”名称作为实体
【发布时间】:2014-09-17 22:00:27
【问题描述】:

我的实体列表包括一个名为“容器”的实体。 (我的公司经常处理容器,这是一个相当“一成不变”的术语。)

所以当我为它们建模数据时,我很自然地称它们为容器。

这意味着我有一个名为 Container 的课程。

我刚刚为 Web API OData 连接了所有控制器,当我尝试使用它编译客户端时,出现错误。 (我正在使用 WCF 数据服务客户端 nuget 包。)

错误是因为我的实体的Container 部分类和另一个包含所有根级别集合的部分类,也称为Container。 (注意:对于通过 OData 的 WCF 数据服务版本运行相同实体的服务,我没有收到此错误。)

所以,我的问题是:有没有办法拥有一个名为 Container 的实体并通过 Web Api OData 公开它?(并且不会出现客户端编译时错误)。

注意:如果您尝试重现这一点,如果名为“Container”的实体与也是根项目的某物有关联(因此它包含在名为“Cntainer”的 DataServiceContext 类中),则会发生错误. 例如,如果 Containers 有一个可能的 ContainerTypes 列表,并且有一个 ContainerTypes 的根列表,那么部分类尝试合并并且存在冲突。

【问题讨论】:

    标签: c# odata asp.net-web-api asp.net-web-api-odata


    【解决方案1】:

    原来 ODataModelBuilder(用于定义所有实体集)具有 ContainerName 属性。

    为您提供与默认“容器”不同的名称的设置

    ODataModelBuilder builder = new ODataConventionModelBuilder();
    builder.ContainerName = "YourCustomContainerNameHere";
    

    【讨论】:

    • 请将您的答案标记为答案。您的回复几乎解决了同样的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-14
    • 2021-08-20
    • 2014-10-21
    • 2017-11-02
    • 1970-01-01
    • 1970-01-01
    • 2014-06-03
    相关资源
    最近更新 更多