客户端-Breeze,创建复杂类型属性

时间:2014-05-19 10:52:38

标签: javascript breeze

我在Durandal项目中工作并使用Breeze-Entities。

在Breeze中,您可以使用实体类型的复杂类型属性。

我在server-breeze实体上做过,但不知道如何在客户端实体中做到这一点。

这是我在服务器实体中的代码:

      function addEmployeeType(store) {
        store.addEntityType({
            shortName: "EmployeeDTO",
            namespace: "myServer.Entities",
            autoGeneratedKeyType: AutoGeneratedKeyType.Identity,
            dataProperties: {
                Emp_no: { dataType: DataType.Int32, isNullable: false, isPartOfKey: true },
                employeeBaseData: {
                    name: "employeeBaseData",
                    complexTypeName: "EmployeeBaseDTO:#myServer.Entities",
                    isNullable: false,
                    isPartOfKey: false
                } 
        });
        store.registerEntityTypeCtor("EmployeeDTO", null, employeeInit);
    }


    function addEmployeeBaseDataType(store) {
        store.addEntityType({
            shortName: "EmployeeBaseDTO",
            namespace: "myServer.Entities",
            isComplexType: true,
            dataProperties: {
                name: { dataType: DataType.String, isNullable: true, isPartOfKey: false, validators: [Validator.required(),validationHelper.numeric()] }
            }
        });
        store.registerEntityTypeCtor("EmployeeBaseDTO", null, null);
    }

这是我的代码,它不是客户端的代码:

   function addReportType() {
        store.addEntityType({
            shortName: 'Report',
            autoGeneratedKeyType: AutoGeneratedKeyType.Identity,
            dataProperties: {
                key:{ dataType: DataType.Int32, isNullable: false, isPartOfKey: true },
                dateArea: {
                    name: "dateArea",
                    complexTypeName: "dateArea",
                    isNullable: false,
                    isPartOfKey: false
                }
            }
        });
        store.registerEntityTypeCtor('Report', null, ReportInit);

    }

 function addReportDateAreaType() {
        store.addEntityType({
            shortName: "dateArea",               
            isComplexType: true,
            dataProperties: {
                fromDate: { dataType: DataType.Date, isNullable: true, isPartOfKey: false },
                toDate: { dataType: DataType.Date, isNullable: true, isPartOfKey: false }
            }
        });
        store.registerEntityTypeCtor('dateArea', null, dateAreaInit);
    }

我知道我的代码不正确。

当我尝试创建ReportType的实例时,我接受:"无法获取属性' _createInstanceCore'未定义或空引用"。

那么为client-breeze实体创建复杂类型属性的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

在complexType名称中添加':#'。 这意味着不是写作:

   complexTypeName: "dateArea",

你需要写:

    complexTypeName: "dateArea:#",