Breeze:addEntityType with complexType(entityTypes aggregation)

时间:2015-03-06 15:53:51

标签: javascript .net breeze

我有.NET实体:

public class Customer
{
    public long Id { get; set; }
    public string FirstName { get; set; }
    public string MiddleName { get; set; }
    public string LastName { get; set; }
    public DateTime BornOn { get; set; }        
    public string RegisteredAddress { get; set; }
    public string ResidentalAddress { get; set; }
}

我使用此代码在Breeze中创建客户端模拟:

        store.addEntityType({
            shortName: 'Customer',
            namespace: 'ClientSide.App',
            dataProperties: {
                id: { dataType: types.long, isNullable: false, isPartOfKey: true },
                firstName: { dataType: types.string },
                middleName: { dataType: types.string },
                lastName: { dataType: types.string },
                bornOn: { dataType: types.datetime },
                registeredAddress: { dataType: types.string },
                residentalAddress: { dataType: types.string },
                lastNameWithInitials: { dataType: types.string },
                phone: { dataType: types.string },
                mobilePhone: { dataType: types.string },
                email: { dataType: types.string }
            }
        });

现在,我有新的服务器端属性:

public Passport Passport { get; set; }

作为

public class Passport
{
    public string Series { get; set; }
    public string Number { get; set; }
    public DateTime IssuedOn { get; set; }
    public string IssueAuthority { get; set; }
}

我无法弄清楚如何在Breeze中添加它?

更新

可以在没有getter属性的情况下完成:

public string Phone
    {
        get
        {
            var contact = Contacts.FirstOrDefault(c => c.Type == ContactType.Phone);
            return contact != null ? contact.Value : "";
        }
    }

还有其他方法吗?

1 个答案:

答案 0 :(得分:1)

看起来Passport是Breeze称之为ComplexType的内容 您应该添加描述Passport类型的元数据,然后将其添加为Customer的属性:

    store.addEntityType({
        shortName: 'Passport',
        namespace: 'ClientSide.App',
        isComplexType: true,
        dataProperties: {
            series: { dataType: types.string },
            number: { dataType: types.string },
            issuedOn: { dataType: types.datetime },
            issueAuthority: { dataType: types.string }
        }
    });

    store.addEntityType({
        shortName: 'Customer',
        namespace: 'ClientSide.App',
        dataProperties: {
            id: { dataType: types.long, isNullable: false, isPartOfKey: true },
            firstName: { dataType: types.string },
            // ... other properties ...
            passport: { complexTypeName: "Passport", isNullable: false}
        }
    });

这在文档的Metadata by Hand - In Depth页面中有所描述, 大约在页面的一半。