73951

Is it possible to expose data from Oracle using OData?

Question:

From my personal research, it appears that OData implementations depend extensively on MS Entity framework. It would seem possible to implement the OData producer protocol using an open ORM like NHibernate in C# or Hibernate in Java.

In the best of all worlds, it would be cool to expose data using OData protocol from Oracle. I am open to other open solutions like Java, JRuby, etc.

Thanks in advance for your time.

Answer1:

Actually Entity Framework is just one of the providers (although the easiest one to start with). You can definitely use NHibernate and I've seen lot of people do that. There are still some dark corners, but for the most part this works just fine. You can also write your own provider (which is lot of work though), for this see the OData Provider Toolkist at <a href="http://www.odata.org/developers/odata-sdk" rel="nofollow">http://www.odata.org/developers/odata-sdk</a>. Last week Oracle also announced that they will release an official Oracle provider for Entity Framework, so using that you can use the EF as the OData provider.

Answer2:

There's a tutorial here: <a href="http://download.oracle.com/oll/obe/EntityFrameworkWCF/WCFEntityFramework.htm" rel="nofollow">WCF Data Services and OData for Oracle Database.</a>

Step 5 on pre-requisites has a link to download the files.

Answer3:

Entity Framework is just one solution for exposing OData. The advantage of this solution is that it's the easiest one.<br /> The good news is that Entity Framework works with Oracle. As Vitek Karas wrote, Oracle will support Entity Framework by then end of the year. But you don't have to wait. Other providers exist. See the products from Devart and Data Direct, for example.

Answer4:

Try using the "Reflection Provider" which is geared towards POCO-based OData. It's easy to map this to any LINQ-enabled ORM - for that step I assume you could use DbLinq for your LINQ-to-Oracle layer.

This article gives an example:

<a href="http://blogs.msdn.com/b/alexj/archive/2010/06/11/tip-56-writing-an-odata-service-using-the-reflection-provider.aspx" rel="nofollow">http://blogs.msdn.com/b/alexj/archive/2010/06/11/tip-56-writing-an-odata-service-using-the-reflection-provider.aspx</a>

In my own findings I didn't even use the attribute markup, though it seems helpful to do so.

As alluded to elsewhere you can also write a complete custom provider, but that seems like unnecessary work given the existence of the reflection provider. Hope it helps!

Recommend

  • pt-table-sync, Strange Issues regarding Hostname
  • A glow around a circular image with CSS on hover
  • Using HTML POST to upload file via PHP
  • Decode json output to a model
  • Export the changed files from visual svn on current commit visual svn server on windows (powershell
  • how do i auto increment a value in firebase
  • JQuery Validation for Duplicates in Form Array
  • Java Regex Finding digits in a String
  • Django SearchVector on choices field
  • InternetExplorer.Application with -nomerge switch?
  • How do you maintain page number after redirect in CakePHP?
  • How to install an R package to R-3.3.0 from GitHub, which is built on R-3.4.0?
  • Scrapy + Splash: scraping element inside inner html
  • FirebaseAnimatedList change content in real time
  • How to implement JQuery confirm dialog with JSF
  • How to create mirrored image effect with CSS single element
  • Unable to connect to AWS RDS through PDO
  • Is possible having two COM STA instances of the same component?
  • Django REST framework - HyperlinkedRelatedField with additional parameter
  • Admob in ListView not clickable
  • Checking for valid enum types from protobufs
  • Unable to start a WebView from an AsyncTask
  • C# code can't “see” the methods in my C++ dll
  • All Event listing on specified date in Google Calender api (V3) in java?
  • time column in sqlite using gorm
  • Ajax call on Multiple selection in Select box
  • How to run chrome.tabs.insertCSS from the background page on each page?
  • Creating 2d platforms using JavaScript
  • Add font awesome icon to custom add to cart button in Woocommerce 3
  • How to write seo friendly url's using htaccess?
  • Is there a better way for handling SpatialPolygons that cross the antimeridian (date line)?
  • C++ STL stack pop operation giving segmentation fault
  • Drag and drop unicode TText in DelphiXe4
  • How do I add a mouse over tooltip to an Image using .DrawImage()
  • How to integrate angular2-material (alpha 8.2) with angular2-Quickstart app
  • `$http:badreq Bad Request Configuration` - from angular post method, what is wrong here?
  • Comma decimal separator is ignored by ASP.NET MVC model binder
  • Python Flask - GUI for client
  • ARKit code issue {unknown error -1=ffffffffffffffff error: Task failed with exit 1}
  • How to check if object is null in Java?