将包含复杂类型的新EntityTypes添加到Breeze';s元数据存储

将包含复杂类型的新EntityTypes添加到Breeze';s元数据存储,breeze,Breeze,为了将自定义类型添加到Breeze元数据存储中,我遵循Breeze的方法。我的目标是能够调用我的WebAPI控制器方法,并使该对象的客户端版本完全水合 我无法检索Employee对象并映射我的Employee属性(FirstName、LastName),也无法映射我包含的复杂类型。这些复杂类型只是我的Employee对象上的属性,由服务器端的其他自定义类集合组成 例如,我有一个自定义类型“CompanyAffiliates”,它包含一个CompanyId和一个Name属性 我似乎无法让Breez

为了将自定义类型添加到Breeze元数据存储中,我遵循Breeze的方法。我的目标是能够调用我的WebAPI控制器方法,并使该对象的客户端版本完全水合

我无法检索Employee对象并映射我的Employee属性(FirstName、LastName),也无法映射我包含的复杂类型。这些复杂类型只是我的Employee对象上的属性,由服务器端的其他自定义类集合组成

例如,我有一个自定义类型“CompanyAffiliates”,它包含一个CompanyId和一个Name属性

我似乎无法让Breeze正确映射任何东西,而且我也没有从错误中得到任何反馈。有人能给我一些建议吗

以下是一些相关代码:

addEmployeeType = function() {
                var entityType = new _entityType({
                    shortName: "Employee",
                    namespace: "HSSPortal.Business.Models",
                    autoGeneratedKeyType: _autoGeneratedKeyType.Identity
                });
                entityType.addProperty(new _dataProperty({
                    name: "customerId",
                    dataType: _dataType.String,
                    isNullable: false,
                    isPartOfKey: true
                }));
                entityType.addProperty(new _dataProperty({
                    name: "firstName",
                    dataType: _dataType.String,
                    isNullable: false
                }));

                entityType.addProperty(new _dataProperty({
                    name: "lastName",
                    dataType: _dataType.String,
                    isNullable: false
                }));
 _store.addEntityType(entityType);

我猜您在服务器上创建的类型的名称与您在客户端上注册的名称不匹配。在本例中,客户端类型将与“HSSPortal.Business.Models”命名空间中名为“Employee”的服务器端类型相匹配

您可以更改客户端类型注册码或服务器端类型,以便类型名称匹配。或者,您可以使用JsonResultsAdapter将服务器上的序列化类型名称解释为客户端上的注册类型。这种方法在您的案例中可能不需要

一个小提示:在上面的代码中,您实际上并没有在这里注册breeze“ComplexType”。复杂类型是通过AddComplexType方法创建的,它既没有键属性,也没有自动生成的KeyType。从概念上讲,“ComplexTypes”表示一组属性,这些属性不可查询,除非在其父实体的上下文中


如果您实际上是在代码中注册复杂类型(上面没有显示),那么它们将有类似的命名问题

谢谢你回复我关于这个杰的消息。我能够推动这个问题的解决,结果证明我对这个问题的描述和现实中发生的事情是非常离谱的。我现在已经能够完全水合我的客户端对象,但是复杂类型(集合)并没有被完全填充。在客户机上只返回集合中的一个。我在这里发布了一个额外的堆栈溢出问题,其中包含更多详细信息:非常感谢您的帮助!