我正在阅读此documentation以了解如何创建odata服务。
我不太清楚EntityContainer
和EntitySet
是什么......
[编辑]
我想问一个误解,我还没弄清楚。如果EntitySet
直截了当是一组实体:
为什么我需要在OData提供程序上实现EntitySet CsdlAbstractEdmProvider.getEntitySet()
方法?正如您在here上看到的,我需要实现返回EntitySet
的方法。这是Olingo文档的实现:
public CsdlEntitySet getEntitySet(FullQualifiedName entityContainer, String entitySetName) {
if(entityContainer.equals(CONTAINER)){
if(entitySetName.equals(ES_PRODUCTS_NAME)){
CsdlEntitySet entitySet = new CsdlEntitySet();
entitySet.setName(ES_PRODUCTS_NAME);
entitySet.setType(ET_PRODUCT_FQN);
return entitySet;
}
}
return null;
}
我不太明白这个实现是什么。
另一方面,在EntityCollectionProcessor
documentation implementation,您可以看到他们也在使用EntitySet
。
我不明白提供商内部和处理器内部EntitySet
之间的区别是什么。
我不知道我是否已经解释得很好
答案 0 :(得分:2)
基于OData documentation,第4.1节:
EDM的核心概念是实体和协会。 实体是实体类型的实例(例如,客户,员工等),它们是由命名和类型属性以及密钥组成的结构化记录。复杂类型是结构化类型,也包含属性列表但没有键,因此只能作为包含实体的属性或作为临时值存在。实体密钥由实体类型的属性子集形成。实体密钥(例如,CustomerId或OrderId)是唯一标识实体类型实例并允许实体类型实例参与关系的基本概念。 实体在实体集中分组(例如,客户是一组客户实体类型实例)。
关联定义两个或多个实体类型之间的关系(例如,Employee WorksFor Department)。关联实例在关联集中分组。导航属性是实体类型的特殊属性,它们绑定到特定关联,可用于引用实体的关联。
最后,所有实例容器(实体集和关联集)都分组在实体容器中。
要点:
希望这有帮助。
编辑,跟随您的问题更改:
Provider.getEntitySet()方法与 Processor.getEntitySet()之间的区别归结为Provider和Processor类的目的不同。< / p>