0

我在 Durandal-project 工作并使用 Breeze 对象。

我有包含一些复杂类型的微风模型。

在服务器端,我将一些复杂类型的属性设置为空。

但是,当对象到达客户端时,我设置为 null 的复杂类型包含对复杂类型对象的引用。我需要它们为空。

我的主要模型模式:

     function addEmployeeType(store) {
        store.addEntityType({
            shortName: "EmployeeDTO",
            namespace: "myServer.Entities",
            autoGeneratedKeyType: AutoGeneratedKeyType.Identity,
            dataProperties: {
                Emp_no1: { dataType: DataType.Int32, isNullable: false, isPartOfKey: true },
                employeeBaseData: {
                    name: "employeeBaseData",
                    complexTypeName: "EmployeeBaseDTO:#myServer.Entities",
                    isNullable: false,
                    isPartOfKey: false
                },
                employeeTblData: {
                    name: "employeeTblData",
                    complexTypeName: "EmployeeTblDTO:#myServer.Entities",
                    isNullable: false
                },
                employeePersonalDetails: {
                    name: "employeePersonalDetails",
                    complexTypeName: "EmployeePersonalDetailsDTO:#myServer.Entities",
                    isNullable: true
                },               
                employeeContacts: {
                    name: "EmployeeJobsDTO",
                    complexTypeName: "EmployeeJobsDTO:#myServer.Entities",
                    isNullable: true
                }
            }

        });
        store.registerEntityTypeCtor("EmployeeDTO", null, employeeInit);
    }

服务器端代码(c#,使用 apiController):

      if (!EnablJobsData)
                employeeData.employeeJobsData = null;

我希望当条件为真时,所以在客户端 employeeData.employeeJobsData() - 返回null。实际上,它返回微风复杂实体。

谢谢!

4

1 回答 1

1

现在,所有标量微风复杂对象属性都被视为不可为空的值类型。做出这个决定是为了查询复杂对象的子属性不必涉及特殊的空检查逻辑。ie 这样我们就可以使用这样的表达式:

myCustomer.address.city == 'Los Angeles";

代替

myCustomer.address != null && myCustomer.address.city == 'Los Angeles';

显然,对于嵌套更深的复杂对象属性,这种表达式会变得更加丑陋。

内部处理的方式是每个复杂对象都有一个“空”版本,即复杂对象的所有属性都设置为默认值或空值。此空版本是任何未分配的复杂对象属性的默认值。

因此,如果您想检测“空”复杂对象,您可以简单地添加一个检查此条件的方法。

请注意,对于返回复杂对象数组的属性,这不是问题。在这种情况下,一个空数组是一个有效的构造。

于 2014-07-29T20:02:52.187 回答