我在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实体创建复杂类型属性的正确方法是什么?
答案 0 :(得分:0)
在complexType名称中添加':#'。 这意味着不是写作:
complexTypeName: "dateArea",
你需要写:
complexTypeName: "dateArea:#",