【问题标题】:Add new EntityTypes containing ComplexTypes to Breeze's metadataStore将包含 ComplexTypes 的新 EntityTypes 添加到 Breeze 的 metadataStore
【发布时间】:2013-03-29 00:55:26
【问题描述】:

我正在关注 Breeze 的 NoDb sample,以便将自定义类型添加到 Breeze 元数据存储中。我的目标是能够调用我的 web api 控制器方法并让该对象的客户端版本完全水合。

我无法检索 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);

【问题讨论】:

    标签: breeze


    【解决方案1】:

    我的猜测是您在服务器上创建的类型的名称与您在客户端上注册的名称不匹配。在这种情况下,您的客户端类型将与“HSSPortal.Business.Models”命名空间中名为“Employee”的服务器端类型匹配。

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

    一个小提示:在上面的代码中,您实际上并没有在这里注册一个轻而易举的“ComplexType”。复杂类型是通过 AddComplexType 方法创建的,它既没有键属性也没有 AutoGeneratedKeyType。从概念上讲,“ComplexTypes”表示除了在其父实体的上下文中不可查询的属性的集合。

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

    【讨论】:

    • 感谢您就这个 Jay 回复我。我能够解决这个问题,结果证明我对问题的描述以及实际发生的事情是离谱的。我现在已经能够充分地补充我的客户端对象,但是复杂类型(集合)并没有被完全填充。一个集合中只有一个将返回填充到客户端。我在此处发布了一个额外的 Stack Overflow 问题,其中包含更多详细信息:stackoverflow.com/questions/15689266/… 非常感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-16
    • 1970-01-01
    • 1970-01-01
    • 2012-08-30
    相关资源
    最近更新 更多