在我正在開發的應用程序中,我創建了一些基於微風元數據和我的類和屬性上的屬性生成的UI小部件。因此,在服務器上,我讀取了屬性,並將它們添加到breeze的生成元數據中。在客戶端上,我加載元數據後,在類型上添加這些屬性。 這個 的例子(在客戶端上,後豐富元數據負載):將自定義數據添加到服務器上的微風元數據
function finishMetadata(md) {
for (var i = 0; i < md.schema.entityType.length; i++) {
var et = md.schema.entityType[i];
var etype = manager.metadataStore.getEntityType(et.name);
//isExportable is a class attribute
etype.isExportable = et.isExportable;
for (var j = 0; j < et.property.length; j++) {
var p = et.property[j];
var prop = etype.getProperty(p.name);
//displayName is a property attribute
prop.displayName = p.displayName ? p.displayName : p.name;
}
}
}
這一點,當我打電話manager.metadataStore.getEntityType(entityName)
,我得到的所有的EntityType數據,包括屬性,所有的屬性我添加到服務器上。
這工作得很好,直到今天。我已經在一些類(Customer:Person)上添加了繼承(TPT),並且由於Customer實體生成的元數據沒有Person屬性,因此我無法將它們添加到metadataStore類型。當我呼叫metadataStore.getEntityType
爲Person
,我得到的所有屬性,但當我打電話給Customer
我沒有得到我的自定義屬性(這是因爲上面的代碼Customer
沒有列出父Person
屬性,所以我沒有機會插入我的自定義屬性
無論如何,這感覺hacky和凌亂,甚至解釋它。所以我們在這裏,微風1.4.7版本,我不知道是否有一種更簡單的方法添加自定義數據元數據不會與TPT斷開?
PS:我知道我可以手工製作元數據,但是我想盡可能地使用默認值以避免將來發生變化的問題。所有的元數據變化應該是最小的和自動的,基於類。