i have 3 tables:
table : man
public string id { get; set; } [jsonproperty(propertyname = "firstname")] public string firstname { get; set; } [jsonproperty(propertyname = "secondname")] public string secondname { get; set; }
table : car
public string id { get; set; } [jsonproperty(propertyname = "name")] public string carname { get; set; }
table: mancar
public string id { get; set; } [jsonproperty(propertyname = "manid")] public string manid { get; set; } [jsonproperty(propertyname = "carid")] public string carid { get; set; }
c# reading date azure code:
public async task<ienumerable<string>> getallcarsbyman(man man) { mobileservicecollection<mancar, mancar> data; imobileservicetable<mancar> datatable = app.mobileservice.gettable<mancar>(); try { data = await datatable .where(item => item.manid == man.id).select(menuitem => menuitem.carid) .tocollectionasync(); } catch (mobileserviceinvalidoperationexception ex) { tools.errorlist.addmessage("azuredataprovider.loaddata" + ex.tostring()); } return data; } public async task<ienumerable<car>> getallcarsforallmen() { list<car> listofcars = new list<car>(); mobileservicecollection<man, man> data; imobileservicetable<man> datatable = app.mobileservice.gettable<man>(); try { data = await datatable.where.tocollectionasync(); foreach (var man in data) { var cars = await getallcarsbyman(man man); if (cars.count>0) { imobileservicetable<car> datacar = app.mobileservice.gettable<car>(); foreach (var car in cars) { data = await datatable.where(item => item.id == car).tocollectionasync(); if(data[0]!=null) { listofcars.add(data[0]); } } } } } catch (mobileserviceinvalidoperationexception ex) { tools.errorlist.addmessage("azuredataprovider.loaddata" + ex.tostring()); } return listofcars; } public async task<ienumerable<string>> getallcarsbyman(man man) { mobileservicecollection<mancar, mancar> data; imobileservicetable<mancar> datatable = app.mobileservice.gettable<mancar>(); try { data = await datatable .where(item => item.manid == man.id).select(menuitem => menuitem.carid) .tocollectionasync(); } catch (mobileserviceinvalidoperationexception ex) { tools.errorlist.addmessage("azuredataprovider.loaddata" + ex.tostring()); } return data; }
when try data tablets it's quite slowly. how can read tables using azuremobileservices ?
as code shows, may possibly know how use linq queries. way using code access db super slow (e.g. result in 1 query run , linq overhead each man cars)
it's best write api (customcontroller) service , use linq join statements retrieve data (single actual query run).
search azure custom api , linq join statements more info