我使用JayData liberary,我想知道在JayData中模拟内部连接是可能的,比如:
Customers inner join Orders on
Customers.CustomerID = Orders.CustomerID这是怎么可能的呢?
发布于 2012-06-28 19:02:55
在当前版本中,JayData通常还不支持AdHoc联接。不过,这已经在路线图上了。
但是,根据您的需求和底层数据提供程序,可以通过多种方式实现类似的行为。我假设您使用的是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(...);https://stackoverflow.com/questions/11222134
复制相似问题