Использование JayData для фильтрации таблицы сведений о заголовке — внутреннее соединение SQL, oData

Здравствуйте, я новичок и использую JayData и oData, поэтому, пожалуйста, простите мое невежество.

Это моя структура объекта:

$data.Entity.extend('PlannerModel.vMasterPlanner', {
    'Sequence_Number': { key:true,type:'Edm.Int32',nullable:false,required:true },
    'Scenario_Name': { type:'Edm.String',nullable:true,maxLength:250 },
    'Activity_ID': { type:'Edm.String',nullable:false,required:true,maxLength:250 },
    'Activity_Description': { type:'Edm.String',nullable:true,maxLength:500 },
    'Object_ID': { type:'Edm.String',nullable:true,maxLength:250 },
    'Object_Description': { type:'Edm.String',nullable:true,maxLength:400 },
    'Operation_Code': { type:'Edm.String',nullable:false,required:true,maxLength:250 },
    'Operation_Description': { type:'Edm.String',nullable:true,maxLength:50 },
    'Crew_ID': { type:'Edm.String',nullable:true,maxLength:250 },
    'Crew_Name': { type:'Edm.String',nullable:true,maxLength:50 },
    'Period': { type:'Edm.Int32',nullable:true },
    'vActivity': { type:'PlannerModel.vActivity',required:true,inverseProperty:'vMasterPlanners' }   });

 $data.Entity.extend('PlannerModel.vActivity', {
    'Activity_ID': { key:true,type:'Edm.String',nullable:false,computed:true },
    'Activity_Name': { type:'Edm.String',nullable:false,required:true },
    'vMasterPlanners': { type:'Array',elementType:'PlannerModel.vMasterPlanner',inverseProperty:'vActivity' }   });


$data.EntityContext.extend('PlannerServiceLibrary.PlannerEntities', {
    ProgressDetails: { type: $data.EntitySet, elementType: PlannerModel.ProgressDetails },
      ProgressHeaders: { type: $data.EntitySet, elementType: PlannerModel.ProgressHeader },
      vCrews: { type: $data.EntitySet, elementType: PlannerModel.vCrew },
      vPeriods: { type: $data.EntitySet, elementType: PlannerModel.vPeriod },
      vOperations: { type: $data.EntitySet, elementType: PlannerModel.vOperation },
      vActivities: { type: $data.EntitySet, elementType: PlannerModel.vActivity },
      vMasterPlanners: { type: $data.EntitySet, elementType: PlannerModel.vMasterPlanner }   });

Небольшое пояснение: мастер-планировщик таблиц — это подробная таблица, а активность таблицы — это таблица заголовков. Мне нужно выбрать все действия из таблицы действий (заголовок), где идентификатор бригады, который находится в таблице сведений, например = 2, как можно я делаю это с помощью oData и JayData

в настоящее время использую

provider.vActivities.filter(function (ac) { 
return ac.vMasterPlanners.Crew_ID == "FM2_F/W" })
               .toArray(function (e) {
                   console.log(e);
               });

и это ошибка Неизвестный тип выражения для обработки: EntitySetExpression localhost/mobile-web/htdocs/assets/jayData/jaydata.js Строка 89

Помогите кто нибудь!!

Спасибо !


person Mohammad Chehab    schedule 29.12.2012    source источник


Ответы (2)


Вам нужен оператор «некоторые» или «каждый», см. этот http://jaydata.org/blog/using-some-and-every-with-jaydata-odata-provider

person Gabor Dolla    schedule 29.12.2012
comment
Можете ли вы попытаться привести мне пример, используя таблицы, которые я предоставил? я уже видел этот пост, и я не понял, как вы снова вызываете эту переменную subFilter в фильтре Спасибо !!!! - person Mohammad Chehab; 29.12.2012
comment
Привет. Это должно быть примерно так: var subFilter = provider.vMasterPlanner.filter(function(ac){return ac.Crew_ID == FM2_F/W;}); provider.vActivities.filter(function (ac) {ac.vMasterPlanners.some(this.subfilter);},{subfilter:subfilter}).toArray(... - person Gabor Dolla; 29.12.2012
comment
вам нужно только «некоторые» или «каждый» в этой ситуации (1..n), 1..1 или n..1 этого не требуется. «некоторые» означают, что хотя бы одна запись соответствует, «каждое» означает, что все записи должны совпадать. - person Gabor Dolla; 29.12.2012
comment
еще не решено :-/ я вспомнил, что уже пробовал это, и это дало мне эту ошибку - person Mohammad Chehab; 29.12.2012
comment
400 Неверный запрос 15 мс datajs-1.0.3.js (строка 1074) NetworkError: 400 Неверный запрос — localhost/PlannerService/Planner.svc// боюсь, что это как-то связано с моей службой? var subFilter = provider.vMasterPlanners.filter(function(ac){return ac.Crew_ID == FM2_F/W;}); provider.vActivities.filter(функция (ac) { ac.vMasterPlanners.some(this.subfilter); }, {subfilter: subFilter}).toArray(function (e) { console.log(e);}) - person Mohammad Chehab; 29.12.2012
comment
Сначала попробуйте что-нибудь простое, например, provider.vActivities.toArray(), чтобы убедиться, что ваш сервис работает. - person Gabor Dolla; 29.12.2012
comment
Также используйте наши пропатченные datajs. Попробуйте поймать сетевой трафик (заголовок и тело запроса) и журнал сервера. - person Gabor Dolla; 29.12.2012
comment
на самом деле служба работает нормально, но когда я добираюсь до этого метода, возникает ошибка!! - person Mohammad Chehab; 29.12.2012
comment
Я обновился до .net 4.5 и изменил протокол на V3, ошибка изменилась на что-то вроде wcf. DataServiceVersion '2.0' слишком мал для запроса. Самая низкая поддерживаемая версия — «3.0». - person Mohammad Chehab; 29.12.2012
comment
и когда я перешел на более раннюю версию, я только что получил простое сообщение: {ошибка: {код:, сообщение: {язык: en-US, значение: при обработке этого запроса произошла ошибка.}}} - person Mohammad Chehab; 29.12.2012
comment
NetworkError: 500 Внутренняя ошибка сервера — localhost/PlannerServiceV3/PlannerService.svc// - person Mohammad Chehab; 29.12.2012
comment
Попробуйте сделать это проще. Попробуйте только подфильтр, например provider.vActivities.filter(....).toArray - person Gabor Dolla; 29.12.2012
comment
Однако я думаю, что ваш ответ правильный: я сделал следующее, загрузив проект oData Northwind из JayData, и написал следующую ссылку на запрос stackoverflow.com/questions/11222134/inner-join-in-jaydata и сделал тот же запрос orderQuery = Northwind.Orders.filter( function(order) { return order. Значение › 200 }); Northwind.Customers.filter( function(customer) { return customer.Orders.some(ordersQuery); }).toArray(function(e){ console.log(e)}) и то же самое, у меня была та же проблема, что и заставило меня псих!! - person Mohammad Chehab; 30.12.2012
comment
Вы открыли вопрос на github? - person Gabor Dolla; 30.12.2012
comment
Я сделал github.com/jaydata/jaydata/issues/70 Спасибо за помощь и человек времени :) - person Mohammad Chehab; 30.12.2012

Похоже на известную проблему, которую я добавил в github http://github.com/jaydata/jaydata/issues/70

person Mohammad Chehab    schedule 30.12.2012