0

私は Durandal プロジェクトで作業しており、Breeze オブジェクトを使用しています。

いくつかの複合型を含む微風モデルがあります。

サーバー側では、複合型のプロパティの一部を null に設定しました。

しかし、オブジェクトがクライアント側に到着すると、null に設定した複合型には複合型のオブジェクトへの参照が含まれます。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

現在、すべてのスカラーブリーズ複合オブジェクト プロパティは、null 非許容値型として扱われます。この決定は、複雑なオブジェクトのサブプロパティのクエリで特別な null チェック ロジックを使用する必要がないようにするために行われました。つまり、次のような式を使用できるようにします。

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

それ以外の

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

明らかに、この種の式は、より深くネストされた複雑なオブジェクト プロパティの場合、さらに醜くなります。

これが内部的に処理される方法は、各複合オブジェクトに「null」バージョンがあります。これは、すべてのプロパティがデフォルト値または null 値に設定された単純な複合オブジェクトです。この null バージョンは、割り当てられていない複合オブジェクト プロパティのデフォルト値です。

したがって、'null' 複合オブジェクトを検出したい場合は、この条件をチェックするメソッドを追加するだけです。

これは、複雑なオブジェクトの配列を返すプロパティの問題ではないことに注意してください。この場合、空の配列は有効な構造です。

于 2014-07-29T20:02:52.187 に答える