Breeze createEntity - 给complexType赋予initialValues

时间:2014-09-07 14:39:44

标签: breeze

我在durandal项目中工作并使用breeze实体。

在我的项目中,我需要创建客户端实体,并在创建时提供initialValues。

通常,您想要将initialValues赋予新实体,并将其传递给createEntity函数。

例如:

dataContext.createEntity('employee', {age:40, city:'OurCity'});

因此,您将获得具有年龄和城市默认数据的新员工空实例。 我想用包含complexFields的实体类型来做。 但它不起作用。

我的实体是客户实体。

以下是代码:

  addFormType(store);
    function addFormType(store) {
        store.addEntityType({
            shortName: "FormDTO",
            autoGeneratedKeyType: AutoGeneratedKeyType.Identity,
            dataProperties: {
                key: {//auto primary key. numeratorA and Code cannot be key, becose for new records thier aren't unique
                    dataType: DataType.Int32, isNullable: false, isPartOfKey: true
                }
                TaxYear: {
                    dataType: DataType.String, validators: [Validator.required({ message: 'דרוש' })]
                },
                Unit_A: {
                    name: "FormUnit_A",
                    complexTypeName: 'FormUnit_A:#'
                }
            }

        });
        store.registerEntityTypeCtor("FormDTO", null, FormInit);
    }

    function FormInit(entity) {
        validationHelper.initializer(entity);
    }

    addFormUnit_AType(store);
    function addFormUnit_AType(store) {
        store.addEntityType({
            shortName: "FormUnit_A",
            isComplexType: true,
            dataProperties: {
                CompanyName: {
                    dataType: DataType.String
                },
                CompanyAddress: {
                    dataType: DataType.String
                }
            }

        });
        store.registerEntityTypeCtor("FormUnit_A", null, null);
    }

我尝试通过以下行来初始化它:

 var defaultData = {
 TaxYear:0,
 Unit_A:{
    CompanyName:'ourCompany',
    CompanyAddress:'Zar 200 OurCity'
 }
};
clientManager.createEntity('FormDTO', defaultData);

但它抛出异常:“对象不支持属性或方法'getProperty'”

我还试图传递一个包含所有属性的单层对象:

var defaultData = {

 TaxYear:0,   
 CompanyName:'ourCompany',
 CompanyAddress:'Zar 200 OurCity'  

};

clientManager.createEntity('FormDTO', defaultData);

但它抛出异常:对象不支持属性或方法'CompanyName'

那么使用initialValues创建实体的正确方法是什么?实体包含复杂类型?

1 个答案:

答案 0 :(得分:0)

根据您项目中的工作原理,您可能会使用像camelCase策略来命名客户端属性。如果不是这样,请原谅这个答案。

如果是这种情况,那么为什么在创建复杂类型时不使用camelCased属性?看起来很简单 -

var defaultData = {
 taxYear:0,
 unit_A:{
    companyName:'ourCompany',
    companyAddress:'Zar 200 OurCity'
 }
};
clientManager.createEntity('FormDTO', defaultData);