Update: we’ve created JaySvcUtil for node, which is our recommended tool to generate JavaScript data model from OData v4 endpoints. Read this article below only if you would like to generate data model from OData v2/v3 endpoints.
JaySvcUtil.exe is a command line tool that downloads an oData service definition ($metadata) and creates a full featured JayData / JavaScript client environment by generating the necessary boilerplate code for you. All you need to do is to include the generated context file and you can start using the OData service with the high level, JavaScript optimized JayData API that supports JavaScript Language Query (JSLQ) and crud operations.
If you are a data API developer you can distribute the generated context and let your users handle data with a manner.
As an example, we will use the Northwind database made available online for testing purposes by Microsoft.
C:\jaydata>JaySvcUtil.exe –-metadataUri http://services.odata.org/Northwind/Northwind.svc/$metadata
–out northwind.js –namespace Northwind
The resulting northwind.js file is included here for reference:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 |
//////////////////////////////////////////////////////////////////////////////////////// ////// Autogenerated - by JaySvcUtil do not modify or be prepared ////// You will need to inlucde jquery manually to have this working (function(global, $data, undefined) { function registerEdmTypes() { function Edm_Boolean() { }; $data.Container.registerType('Edm.Boolean', Edm_Boolean); $data.Container.mapType(Edm_Boolean, $data.Boolean); function Edm_Binary() { }; $data.Container.registerType('Edm.Binary', Edm_Binary); $data.Container.mapType(Edm_Binary, $data.Blob); function Edm_DateTime() { }; $data.Container.registerType('Edm.DateTime', Edm_DateTime); $data.Container.mapType(Edm_DateTime, $data.Date); function Edm_DateTimeOffset() { }; $data.Container.registerType('Edm.DateTimeOffset', Edm_DateTimeOffset); $data.Container.mapType(Edm_DateTimeOffset, $data.Integer); function Edm_Time() { }; $data.Container.registerType('Edm.Time', Edm_Time); $data.Container.mapType(Edm_Time, $data.Integer); function Edm_Decimal() { }; $data.Container.registerType('Edm.Decimal', Edm_Decimal); $data.Container.mapType(Edm_Decimal, $data.Number); function Edm_Single() { }; $data.Container.registerType('Edm.Single', Edm_Single); $data.Container.mapType(Edm_Single, $data.Number); function Edm_Double() { }; $data.Container.registerType('Edm.Double', Edm_Double); $data.Container.mapType(Edm_Double, $data.Number); function Edm_Guid() { }; $data.Container.registerType('Edm.Guid', Edm_Guid); $data.Container.mapType(Edm_Guid, $data.String); function Edm_Int16() { }; $data.Container.registerType('Edm.Int16', Edm_Int16); $data.Container.mapType(Edm_Int16, $data.Integer); function Edm_Int32() { }; $data.Container.registerType('Edm.Int32', Edm_Int32); $data.Container.mapType(Edm_Int32, $data.Integer); function Edm_Int64() { }; $data.Container.registerType('Edm.Int64', Edm_Int64); $data.Container.mapType(Edm_Int64, $data.Integer); function Edm_Byte() { }; $data.Container.registerType('Edm.Byte', Edm_Byte); $data.Container.mapType(Edm_Byte, $data.Integer); function Edm_String() { }; $data.Container.registerType('Edm.String', Edm_String); $data.Container.mapType(Edm_String, $data.String); }; registerEdmTypes(); $data.Entity.extend('NorthwindModel.Category', { 'CategoryID': { key:true,dataType:'Edm.Int32',nullable:false,required:true,computed:true }, 'CategoryName': { dataType:'Edm.String',nullable:false,required:true,maxLength:15 }, 'Description': { dataType:'Edm.String',nullable:true,maxLength:Max }, 'Picture': { dataType:'Edm.Binary',nullable:true,maxLength:Max }, 'Products': { dataType:'Array',elementType:'NorthwindModel.Product',navigationProperty:'Category' } }); $data.Entity.extend('NorthwindModel.CustomerDemographic', { 'CustomerTypeID': { key:true,dataType:'Edm.String',nullable:false,required:true,maxLength:10 }, 'CustomerDesc': { dataType:'Edm.String',nullable:true,maxLength:Max }, 'Customers': { dataType:'Array',elementType:'NorthwindModel.Customer',navigationProperty:'CustomerDemographics' } }); $data.Entity.extend('NorthwindModel.Customer', { 'CustomerID': { key:true,dataType:'Edm.String',nullable:false,required:true,maxLength:5 }, 'CompanyName': { dataType:'Edm.String',nullable:false,required:true,maxLength:40 }, 'ContactName': { dataType:'Edm.String',nullable:true,maxLength:30 }, 'ContactTitle': { dataType:'Edm.String',nullable:true,maxLength:30 }, 'Address': { dataType:'Edm.String',nullable:true,maxLength:60 }, 'City': { dataType:'Edm.String',nullable:true,maxLength:15 }, 'Region': { dataType:'Edm.String',nullable:true,maxLength:15 }, 'PostalCode': { dataType:'Edm.String',nullable:true,maxLength:10 }, 'Country': { dataType:'Edm.String',nullable:true,maxLength:15 }, 'Phone': { dataType:'Edm.String',nullable:true,maxLength:24 }, 'Fax': { dataType:'Edm.String',nullable:true,maxLength:24 }, 'Orders': { dataType:'Array',elementType:'NorthwindModel.Order',navigationProperty:'Customers' }, 'CustomerDemographics': { dataType:'Array',elementType:'NorthwindModel.CustomerDemographic',navigationProperty:'Customers' } }); $data.Entity.extend('NorthwindModel.Employee', { 'EmployeeID': { key:true,dataType:'Edm.Int32',nullable:false,required:true,computed:true }, 'LastName': { dataType:'Edm.String',nullable:false,required:true,maxLength:20 }, 'FirstName': { dataType:'Edm.String',nullable:false,required:true,maxLength:10 }, 'Title': { dataType:'Edm.String',nullable:true,maxLength:30 }, 'TitleOfCourtesy': { dataType:'Edm.String',nullable:true,maxLength:25 }, 'BirthDate': { dataType:'Edm.DateTime',nullable:true }, 'HireDate': { dataType:'Edm.DateTime',nullable:true }, 'Address': { dataType:'Edm.String',nullable:true,maxLength:60 }, 'City': { dataType:'Edm.String',nullable:true,maxLength:15 }, 'Region': { dataType:'Edm.String',nullable:true,maxLength:15 }, 'PostalCode': { dataType:'Edm.String',nullable:true,maxLength:10 }, 'Country': { dataType:'Edm.String',nullable:true,maxLength:15 }, 'HomePhone': { dataType:'Edm.String',nullable:true,maxLength:24 }, 'Extension': { dataType:'Edm.String',nullable:true,maxLength:4 }, 'Photo': { dataType:'Edm.Binary',nullable:true,maxLength:Max }, 'Notes': { dataType:'Edm.String',nullable:true,maxLength:Max }, 'ReportsTo': { dataType:'Edm.Int32',nullable:true }, 'PhotoPath': { dataType:'Edm.String',nullable:true,maxLength:255 }, 'Employees1': { dataType:'Array',elementType:'NorthwindModel.Employee',navigationProperty:'Employee1' }, 'Employee1': { dataType:'NorthwindModel.Employee',navigationProperty:'Employees1' }, 'Orders': { dataType:'Array',elementType:'NorthwindModel.Order',navigationProperty:'Employee1' }, 'Territories': { dataType:'Array',elementType:'NorthwindModel.Territory',navigationProperty:'Employee1' } }); $data.Entity.extend('NorthwindModel.Order_Detail', { 'OrderID': { key:true,dataType:'Edm.Int32',nullable:false,required:true }, 'ProductID': { key:true,dataType:'Edm.Int32',nullable:false,required:true }, 'UnitPrice': { dataType:'Edm.Decimal',nullable:false,required:true }, 'Quantity': { dataType:'Edm.Int16',nullable:false,required:true }, 'Discount': { dataType:'Edm.Single',nullable:false,required:true }, 'Order': { dataType:'NorthwindModel.Order',required:true,navigationProperty:'Order_Details' }, 'Product': { dataType:'NorthwindModel.Product',required:true,navigationProperty:'Order_Details' } }); $data.Entity.extend('NorthwindModel.Order', { 'OrderID': { key:true,dataType:'Edm.Int32',nullable:false,required:true,computed:true }, 'CustomerID': { dataType:'Edm.String',nullable:true,maxLength:5 }, 'EmployeeID': { dataType:'Edm.Int32',nullable:true }, 'OrderDate': { dataType:'Edm.DateTime',nullable:true }, 'RequiredDate': { dataType:'Edm.DateTime',nullable:true }, 'ShippedDate': { dataType:'Edm.DateTime',nullable:true }, 'ShipVia': { dataType:'Edm.Int32',nullable:true }, 'Freight': { dataType:'Edm.Decimal',nullable:true }, 'ShipName': { dataType:'Edm.String',nullable:true,maxLength:40 }, 'ShipAddress': { dataType:'Edm.String',nullable:true,maxLength:60 }, 'ShipCity': { dataType:'Edm.String',nullable:true,maxLength:15 }, 'ShipRegion': { dataType:'Edm.String',nullable:true,maxLength:15 }, 'ShipPostalCode': { dataType:'Edm.String',nullable:true,maxLength:10 }, 'ShipCountry': { dataType:'Edm.String',nullable:true,maxLength:15 }, 'Customer': { dataType:'NorthwindModel.Customer',navigationProperty:'Orders' }, 'Employee': { dataType:'NorthwindModel.Employee',navigationProperty:'Orders' }, 'Order_Details': { dataType:'Array',elementType:'NorthwindModel.Order_Detail',navigationProperty:'Orders' }, 'Shipper': { dataType:'NorthwindModel.Shipper',navigationProperty:'Orders' } }); $data.Entity.extend('NorthwindModel.Product', { 'ProductID': { key:true,dataType:'Edm.Int32',nullable:false,required:true,computed:true }, 'ProductName': { dataType:'Edm.String',nullable:false,required:true,maxLength:40 }, 'SupplierID': { dataType:'Edm.Int32',nullable:true }, 'CategoryID': { dataType:'Edm.Int32',nullable:true }, 'QuantityPerUnit': { dataType:'Edm.String',nullable:true,maxLength:20 }, 'UnitPrice': { dataType:'Edm.Decimal',nullable:true }, 'UnitsInStock': { dataType:'Edm.Int16',nullable:true }, 'UnitsOnOrder': { dataType:'Edm.Int16',nullable:true }, 'ReorderLevel': { dataType:'Edm.Int16',nullable:true }, 'Discontinued': { dataType:'Edm.Boolean',nullable:false,required:true }, 'Category': { dataType:'NorthwindModel.Category',navigationProperty:'Products' }, 'Order_Details': { dataType:'Array',elementType:'NorthwindModel.Order_Detail',navigationProperty:'Products' }, 'Supplier': { dataType:'NorthwindModel.Supplier',navigationProperty:'Products' } }); $data.Entity.extend('NorthwindModel.Region', { 'RegionID': { key:true,dataType:'Edm.Int32',nullable:false,required:true }, 'RegionDescription': { dataType:'Edm.String',nullable:false,required:true,maxLength:50 }, 'Territories': { dataType:'Array',elementType:'NorthwindModel.Territory',navigationProperty:'Region' } }); $data.Entity.extend('NorthwindModel.Shipper', { 'ShipperID': { key:true,dataType:'Edm.Int32',nullable:false,required:true,computed:true }, 'CompanyName': { dataType:'Edm.String',nullable:false,required:true,maxLength:40 }, 'Phone': { dataType:'Edm.String',nullable:true,maxLength:24 }, 'Orders': { dataType:'Array',elementType:'NorthwindModel.Order',navigationProperty:'Shipper' } }); $data.Entity.extend('NorthwindModel.Supplier', { 'SupplierID': { key:true,dataType:'Edm.Int32',nullable:false,required:true,computed:true }, 'CompanyName': { dataType:'Edm.String',nullable:false,required:true,maxLength:40 }, 'ContactName': { dataType:'Edm.String',nullable:true,maxLength:30 }, 'ContactTitle': { dataType:'Edm.String',nullable:true,maxLength:30 }, 'Address': { dataType:'Edm.String',nullable:true,maxLength:60 }, 'City': { dataType:'Edm.String',nullable:true,maxLength:15 }, 'Region': { dataType:'Edm.String',nullable:true,maxLength:15 }, 'PostalCode': { dataType:'Edm.String',nullable:true,maxLength:10 }, 'Country': { dataType:'Edm.String',nullable:true,maxLength:15 }, 'Phone': { dataType:'Edm.String',nullable:true,maxLength:24 }, 'Fax': { dataType:'Edm.String',nullable:true,maxLength:24 }, 'HomePage': { dataType:'Edm.String',nullable:true,maxLength:Max }, 'Products': { dataType:'Array',elementType:'NorthwindModel.Product',navigationProperty:'Supplier' } }); $data.Entity.extend('NorthwindModel.Territory', { 'TerritoryID': { key:true,dataType:'Edm.String',nullable:false,required:true,maxLength:20 }, 'TerritoryDescription': { dataType:'Edm.String',nullable:false,required:true,maxLength:50 }, 'RegionID': { dataType:'Edm.Int32',nullable:false,required:true }, 'Region': { dataType:'NorthwindModel.Region',required:true,navigationProperty:'Territories' }, 'Employees': { dataType:'Array',elementType:'NorthwindModel.Employee',navigationProperty:'Territories' } }); $data.Entity.extend('NorthwindModel.Alphabetical_list_of_product', { 'ProductID': { key:true,dataType:'Edm.Int32',nullable:false,required:true }, 'ProductName': { key:true,dataType:'Edm.String',nullable:false,required:true,maxLength:40 }, 'SupplierID': { dataType:'Edm.Int32',nullable:true }, 'CategoryID': { dataType:'Edm.Int32',nullable:true }, 'QuantityPerUnit': { dataType:'Edm.String',nullable:true,maxLength:20 }, 'UnitPrice': { dataType:'Edm.Decimal',nullable:true }, 'UnitsInStock': { dataType:'Edm.Int16',nullable:true }, 'UnitsOnOrder': { dataType:'Edm.Int16',nullable:true }, 'ReorderLevel': { dataType:'Edm.Int16',nullable:true }, 'Discontinued': { key:true,dataType:'Edm.Boolean',nullable:false,required:true }, 'CategoryName': { key:true,dataType:'Edm.String',nullable:false,required:true,maxLength:15 } }); $data.Entity.extend('NorthwindModel.Category_Sales_for_1997', { 'CategoryName': { key:true,dataType:'Edm.String',nullable:false,required:true,maxLength:15 }, 'CategorySales': { dataType:'Edm.Decimal',nullable:true } }); $data.Entity.extend('NorthwindModel.Current_Product_List', { 'ProductID': { key:true,dataType:'Edm.Int32',nullable:false,required:true,computed:true }, 'ProductName': { key:true,dataType:'Edm.String',nullable:false,required:true,maxLength:40 } }); $data.Entity.extend('NorthwindModel.Customer_and_Suppliers_by_City', { 'City': { dataType:'Edm.String',nullable:true,maxLength:15 }, 'CompanyName': { key:true,dataType:'Edm.String',nullable:false,required:true,maxLength:40 }, 'ContactName': { dataType:'Edm.String',nullable:true,maxLength:30 }, 'Relationship': { key:true,dataType:'Edm.String',nullable:false,required:true,maxLength:9 } }); $data.Entity.extend('NorthwindModel.Invoice', { 'ShipName': { dataType:'Edm.String',nullable:true,maxLength:40 }, 'ShipAddress': { dataType:'Edm.String',nullable:true,maxLength:60 }, 'ShipCity': { dataType:'Edm.String',nullable:true,maxLength:15 }, 'ShipRegion': { dataType:'Edm.String',nullable:true,maxLength:15 }, 'ShipPostalCode': { dataType:'Edm.String',nullable:true,maxLength:10 }, 'ShipCountry': { dataType:'Edm.String',nullable:true,maxLength:15 }, 'CustomerID': { dataType:'Edm.String',nullable:true,maxLength:5 }, 'CustomerName': { key:true,dataType:'Edm.String',nullable:false,required:true,maxLength:40 }, 'Address': { dataType:'Edm.String',nullable:true,maxLength:60 }, 'City': { dataType:'Edm.String',nullable:true,maxLength:15 }, 'Region': { dataType:'Edm.String',nullable:true,maxLength:15 }, 'PostalCode': { dataType:'Edm.String',nullable:true,maxLength:10 }, 'Country': { dataType:'Edm.String',nullable:true,maxLength:15 }, 'Salesperson': { key:true,dataType:'Edm.String',nullable:false,required:true,maxLength:31 }, 'OrderID': { key:true,dataType:'Edm.Int32',nullable:false,required:true }, 'OrderDate': { dataType:'Edm.DateTime',nullable:true }, 'RequiredDate': { dataType:'Edm.DateTime',nullable:true }, 'ShippedDate': { dataType:'Edm.DateTime',nullable:true }, 'ShipperName': { key:true,dataType:'Edm.String',nullable:false,required:true,maxLength:40 }, 'ProductID': { key:true,dataType:'Edm.Int32',nullable:false,required:true }, 'ProductName': { key:true,dataType:'Edm.String',nullable:false,required:true,maxLength:40 }, 'UnitPrice': { key:true,dataType:'Edm.Decimal',nullable:false,required:true }, 'Quantity': { key:true,dataType:'Edm.Int16',nullable:false,required:true }, 'Discount': { key:true,dataType:'Edm.Single',nullable:false,required:true }, 'ExtendedPrice': { dataType:'Edm.Decimal',nullable:true }, 'Freight': { dataType:'Edm.Decimal',nullable:true } }); $data.Entity.extend('NorthwindModel.Order_Details_Extended', { 'OrderID': { key:true,dataType:'Edm.Int32',nullable:false,required:true }, 'ProductID': { key:true,dataType:'Edm.Int32',nullable:false,required:true }, 'ProductName': { key:true,dataType:'Edm.String',nullable:false,required:true,maxLength:40 }, 'UnitPrice': { key:true,dataType:'Edm.Decimal',nullable:false,required:true }, 'Quantity': { key:true,dataType:'Edm.Int16',nullable:false,required:true }, 'Discount': { key:true,dataType:'Edm.Single',nullable:false,required:true }, 'ExtendedPrice': { dataType:'Edm.Decimal',nullable:true } }); $data.Entity.extend('NorthwindModel.Order_Subtotal', { 'OrderID': { key:true,dataType:'Edm.Int32',nullable:false,required:true }, 'Subtotal': { dataType:'Edm.Decimal',nullable:true } }); $data.Entity.extend('NorthwindModel.Orders_Qry', { 'OrderID': { key:true,dataType:'Edm.Int32',nullable:false,required:true }, 'CustomerID': { dataType:'Edm.String',nullable:true,maxLength:5 }, 'EmployeeID': { dataType:'Edm.Int32',nullable:true }, 'OrderDate': { dataType:'Edm.DateTime',nullable:true }, 'RequiredDate': { dataType:'Edm.DateTime',nullable:true }, 'ShippedDate': { dataType:'Edm.DateTime',nullable:true }, 'ShipVia': { dataType:'Edm.Int32',nullable:true }, 'Freight': { dataType:'Edm.Decimal',nullable:true }, 'ShipName': { dataType:'Edm.String',nullable:true,maxLength:40 }, 'ShipAddress': { dataType:'Edm.String',nullable:true,maxLength:60 }, 'ShipCity': { dataType:'Edm.String',nullable:true,maxLength:15 }, 'ShipRegion': { dataType:'Edm.String',nullable:true,maxLength:15 }, 'ShipPostalCode': { dataType:'Edm.String',nullable:true,maxLength:10 }, 'ShipCountry': { dataType:'Edm.String',nullable:true,maxLength:15 }, 'CompanyName': { key:true,dataType:'Edm.String',nullable:false,required:true,maxLength:40 }, 'Address': { dataType:'Edm.String',nullable:true,maxLength:60 }, 'City': { dataType:'Edm.String',nullable:true,maxLength:15 }, 'Region': { dataType:'Edm.String',nullable:true,maxLength:15 }, 'PostalCode': { dataType:'Edm.String',nullable:true,maxLength:10 }, 'Country': { dataType:'Edm.String',nullable:true,maxLength:15 } }); $data.Entity.extend('NorthwindModel.Product_Sales_for_1997', { 'CategoryName': { key:true,dataType:'Edm.String',nullable:false,required:true,maxLength:15 }, 'ProductName': { key:true,dataType:'Edm.String',nullable:false,required:true,maxLength:40 }, 'ProductSales': { dataType:'Edm.Decimal',nullable:true } }); $data.Entity.extend('NorthwindModel.Products_Above_Average_Price', { 'ProductName': { key:true,dataType:'Edm.String',nullable:false,required:true,maxLength:40 }, 'UnitPrice': { dataType:'Edm.Decimal',nullable:true } }); $data.Entity.extend('NorthwindModel.Products_by_Category', { 'CategoryName': { key:true,dataType:'Edm.String',nullable:false,required:true,maxLength:15 }, 'ProductName': { key:true,dataType:'Edm.String',nullable:false,required:true,maxLength:40 }, 'QuantityPerUnit': { dataType:'Edm.String',nullable:true,maxLength:20 }, 'UnitsInStock': { dataType:'Edm.Int16',nullable:true }, 'Discontinued': { key:true,dataType:'Edm.Boolean',nullable:false,required:true } }); $data.Entity.extend('NorthwindModel.Sales_by_Category', { 'CategoryID': { key:true,dataType:'Edm.Int32',nullable:false,required:true }, 'CategoryName': { key:true,dataType:'Edm.String',nullable:false,required:true,maxLength:15 }, 'ProductName': { key:true,dataType:'Edm.String',nullable:false,required:true,maxLength:40 }, 'ProductSales': { dataType:'Edm.Decimal',nullable:true } }); $data.Entity.extend('NorthwindModel.Sales_Totals_by_Amount', { 'SaleAmount': { dataType:'Edm.Decimal',nullable:true }, 'OrderID': { key:true,dataType:'Edm.Int32',nullable:false,required:true }, 'CompanyName': { key:true,dataType:'Edm.String',nullable:false,required:true,maxLength:40 }, 'ShippedDate': { dataType:'Edm.DateTime',nullable:true } }); $data.Entity.extend('NorthwindModel.Summary_of_Sales_by_Quarter', { 'ShippedDate': { dataType:'Edm.DateTime',nullable:true }, 'OrderID': { key:true,dataType:'Edm.Int32',nullable:false,required:true }, 'Subtotal': { dataType:'Edm.Decimal',nullable:true } }); $data.Entity.extend('NorthwindModel.Summary_of_Sales_by_Year', { 'ShippedDate': { dataType:'Edm.DateTime',nullable:true }, 'OrderID': { key:true,dataType:'Edm.Int32',nullable:false,required:true }, 'Subtotal': { dataType:'Edm.Decimal',nullable:true } }); $data.EntityContext.extend('ODataWeb.Northwind.Model.NorthwindEntities', { Categories: { dataType: $data.EntitySet, elementType: NorthwindModel.Category }, CustomerDemographics: { dataType: $data.EntitySet, elementType: NorthwindModel.CustomerDemographic }, Customers: { dataType: $data.EntitySet, elementType: NorthwindModel.Customer }, Employees: { dataType: $data.EntitySet, elementType: NorthwindModel.Employee }, Order_Details: { dataType: $data.EntitySet, elementType: NorthwindModel.Order_Detail }, Orders: { dataType: $data.EntitySet, elementType: NorthwindModel.Order }, Products: { dataType: $data.EntitySet, elementType: NorthwindModel.Product }, Regions: { dataType: $data.EntitySet, elementType: NorthwindModel.Region }, Shippers: { dataType: $data.EntitySet, elementType: NorthwindModel.Shipper }, Suppliers: { dataType: $data.EntitySet, elementType: NorthwindModel.Supplier }, Territories: { dataType: $data.EntitySet, elementType: NorthwindModel.Territory }, Alphabetical_list_of_products: { dataType: $data.EntitySet, elementType: NorthwindModel.Alphabetical_list_of_product }, Category_Sales_for_1997: { dataType: $data.EntitySet, elementType: NorthwindModel.Category_Sales_for_1997 }, Current_Product_Lists: { dataType: $data.EntitySet, elementType: NorthwindModel.Current_Product_List }, Customer_and_Suppliers_by_Cities: { dataType: $data.EntitySet, elementType: NorthwindModel.Customer_and_Suppliers_by_City }, Invoices: { dataType: $data.EntitySet, elementType: NorthwindModel.Invoice }, Order_Details_Extendeds: { dataType: $data.EntitySet, elementType: NorthwindModel.Order_Details_Extended }, Order_Subtotals: { dataType: $data.EntitySet, elementType: NorthwindModel.Order_Subtotal }, Orders_Qries: { dataType: $data.EntitySet, elementType: NorthwindModel.Orders_Qry }, Product_Sales_for_1997: { dataType: $data.EntitySet, elementType: NorthwindModel.Product_Sales_for_1997 }, Products_Above_Average_Prices: { dataType: $data.EntitySet, elementType: NorthwindModel.Products_Above_Average_Price }, Products_by_Categories: { dataType: $data.EntitySet, elementType: NorthwindModel.Products_by_Category }, Sales_by_Categories: { dataType: $data.EntitySet, elementType: NorthwindModel.Sales_by_Category }, Sales_Totals_by_Amounts: { dataType: $data.EntitySet, elementType: NorthwindModel.Sales_Totals_by_Amount }, Summary_of_Sales_by_Quarters: { dataType: $data.EntitySet, elementType: NorthwindModel.Summary_of_Sales_by_Quarter }, Summary_of_Sales_by_Years: { dataType: $data.EntitySet, elementType: NorthwindModel.Summary_of_Sales_by_Year } }); ODataWeb.Northwind.Model.context = new ODataWeb.Northwind.Model.NorthwindEntities( { name:'oData', oDataServiceHost: 'http://services.odata.org/Northwind/Northwind.svc' }); })(window, $data); |
From now on you only need an html client page that includes both jqeury, JayData.js and the newly forged Northwind.js to let the miracle begin.
JaySvcUtil.exe command line parameters
parameter | description | default value |
metadataUri / m | Required. The uri of the oData $metadata definition. Can be an online resource or a local file as well | |
out / o | The name of the generated output file. | JayDataContext.js |
namespace | The namespace of the generated JayData EntitContext class. | Taken from the service metadata. |
contextBaseClass | The name of the base class for the generated entity context. | $data.EntityContext |
entityBaseClass | The name of the base class for the generated entity types. | $data.Entity |
entitySetBaseClass | The name of the base class for the generated entity sets. | $data.EntitySet |
collectionBaseClass | The name of the base class for the generated entity sets. Default is | Array |
autoCreateContext | Create an instance of the context with default parameters. |
true |
contextInstanceName | The name of the automatically generated context instance under the context namespace. Default is | context |
help | Displays parameter options. |