私はJayDataライブラリを使用していますが、次のように、JayDataで内部結合をシミュレートできることを知りたいです。
Customers inner join Orders on
Customers.CustomerID = Orders.CustomerID
そしてそれはどのように可能でしょうか?
私はJayDataライブラリを使用していますが、次のように、JayDataで内部結合をシミュレートできることを知りたいです。
Customers inner join Orders on
Customers.CustomerID = Orders.CustomerID
そしてそれはどのように可能でしょうか?
一般的なAdHoc結合は、現在のリリースではまだJayDataによってサポートされていません。しかし、それはロードマップ上にあります。
ただし、ニーズと基盤となるデータプロバイダーに応じて、さまざまな方法で同様の動作を実現できます。ODataプロバイダーを使用していると思います。
この場合、ナビゲーションプロパティを使用して関係を表すことができるため、クエリで暗黙的な結合を実現できます。
エンティティとコンテキストの定義:
$data.Entity.extend("Customer", {
Id: { key: true, computed: true, type: 'int' },
Name: { type:string },
Orders: { type: $data.EntitySet, elementType: 'Order', inverseProperty: 'Customer' }
});
$data.Entity.extend("Order" {
Id: { key: true, computed: true, type: 'int' },
Customer: { type: Customer, inverseProperty: 'Orders' }
});
$data.EntityCotnext.extend("CustomerOrders", {
Customers: { type: $data.EntitySet, elementType: Customer },
Orders: { type: $Data.EntitySet, elementType: Order }
});
1)顧客による注文の照会:
context.Orders.filter( function(order) {
return order.Customer.Name.startsWith('John');
}).toArray(...)
2)注文による顧客への問い合わせ:これはJayData 1.1でリリースされた新機能です(ファイルを必ず更新してください)
ordersQuery = context.Orders.filter( function(order) { return order.Value > 200 });
context.Customers.filter( function(customer) {
return custom.Orders.some(ordersQuery);
}).toArray(...);