PersonBrief
EntityType として定義しましたか? 私は賭けていません...特に、サンプルで「personBrief」と呼んでいたことを考えると。このtoType()
メソッドは、単純でフラットな既知の EntityType をキャストするためのものです。ですから、ここで少し軌道から外れていると思います。
なぜにキャストしないのPerson
ですか?Person マテリアルの一部が欠落していることは確かです (CCJS のように ... ただし、すべてのデータ プロパティを投影しているこの特定の例ではありません)。しかし、それは非常に簡単です。ただ書いてtoType('Person')
ください。あなたはそれを試しましたか?
実際にクライアントでそのような EntityType を定義したい場合は、 docs で説明されているようにできます。その場合、toType()
その型へのキャストを使用でき、Breeze はそれをキャッシュで追跡します。もちろん、そのようなものをサーバーに保存することは別の問題です。それは可能です...それは一種のDTOかもしれません...しかし、サーバーにインターセプトロジックを記述し、データを実際のサーバー側の永続エンティティに変換する必要があり、このパスは私の回答の範囲を超えています.
ここにいくつかのコードがあります...私の頭のてっぺんから書き出されました...しかし、それはあなたを正しい方向に向けるはずです。Pet
これは、ComplexType ではなく EntityType であると想定していることに注意してください。現時点では、Breeze は ComplexTypes の配列をサポートしていません (サポートする予定ですが、現在はサポートしていません)。
// 指定された MetadataStore の PersonBrief 型を定義します
関数 addPersonBriefType(metadataStore) {
var perType = metadataStore.getEntityType('Person');
var type = 新しいそよ風.EntityType({
shortName: 'PersonBrief',
名前空間: perType.namespace
});
var idProperty = 新しいそよ風.DataProperty({
nameOnServer: 'ID',
データ型:そよ風.DataType.Int32、
isPartOfKey: 真、
});
type.addProperty(idProperty);
type.addProperty(新しいそよ風.DataProperty({ nameOnServer: '名前' }));
// Pets コレクションを定義する方法は次のとおりです
// 既にメタデータに Pet タイプがあり、
// Person に戻る逆ナビゲーションがあります
// Person から Pets へのナビゲーション プロパティを取得します
var assoc = perType.getNavigationProperty('ペット');
type.addProperty(新しいそよ風.NavigationProperty({
nameOnServer: 'ペット',
isScalar: false, // コレクションです
entityTypeName: assoc.entityType.name,
外部キー名: assoc.inverse.外部キー名、
AssociationName: assoc.associationName
}));
metadataStore.addEntityType(タイプ);
戻り型;
}
に相当する DocCode サンプルEmployeePartial
のmetadataTests.jsで、このようなことを行うことができましPets
たOrders
。比較可能な射影クエリは次のとおりです。
var query = Breeze.EntityQuery.from('従業員')
.where('EmployeeID', 'eq', 1)
.select('EmployeeID, FirstName, LastName, Orders')
.toType('EmployeePartial')
補足するタイプsumOfPetAges
があるため、計算されたものは機能するはずです。PersonBrief
私は確かにそれを自分で翼をつけています。私がここに書いたコードのこの特定のビットに誓うことができなくても、それが機能することは知っています. これがどうなるか教えてください。
PersonBrief
ps からにナビゲートできるはずですが、 a から aにPets
戻ることを期待しないでください。そのナビゲーション プロパティは定義されていません。Pet
PersonBrief