我有.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 : "";
}
}
还有其他方法吗?
答案 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页面中有所描述, 大约在页面的一半。