Will OO4O support ASP.NET? - OO4O and Wizards(Archived)

I've been developing ASP.NET pages which access a particular DB structure which uses peculiar Oracle features (objects, REFs, ecc.).
While I'm generally able to get the desired result, the interaction between the OO4O classes and the .NET ones is rather difficult. For example, if you want to retrieve an OraObject you have to use the OO4O hierarchy, but classes in that same hierarchy are not directly migrable to a DataReader class, which gets used by a lot of .NET classes (like Datagrid and Datalist) which provide very useful functionalities.
Is there any plan for direct .NET support in OO4O future releases?


New db functionality

Christian, in order to use new functionality like invalidating a cached object, MARS, etc like MS SQL Server, VS.Net 2005 will have new classes in them to do just that and take advantage of ADO.NET 2.0.
Will ORACLE have similiar classes in the ADO.Net 2.0 framework to use in conjunction with the ORACLE db? After all, when ADO.Net 2.0 comes out and we can't take advantage of some of the new classes, SQL Server will have a "leg up" on why to use SQL Server instead of ORACLE. I feel that ORACLE must keep up with whatever functionality MS provides in each iteration of the .Net framework that works with SQL Server.
Being able to take advantage of the new .Net frameowrk functionality is of paramount importance to make db access more efficient, etc.... 
Hi William,
ODP.NET is not my product so I'll see if I can get someone who can answer this. Alternatively you could try posting this to the ODP.NET forum.

How much faster is Oracle.DataAccess.Client over System.Data.OracleClient ?

Ok, I can use two differenct data providers in VisualCSharp/.NET:
1.) MS built-in data provider:
using System.Data.OracleClient ;
2.) Oracle ODP.NET data provider:
using Oracle.DataAccess.Client ;
How much faster is Oracle over the built-in access provider ?
Does Oracles ODP use MS basic ADO.NET as underlying layer
or does it bypass it ?
What are the other advantages when I use Oracle ODP?
Is there a side-by-side comparison chart between the two access methods ? 
We did extensive performance testing when trying to decide which provider to use. I don't have the hard numbers any more, but Oracle's provider was 5-10% faster for most operations. There were some small selects where the MS provider proved to be marginally faster. 
Ok, as a first rule of thumb this is fine.
But more general: Is the focus of the ODP data provider more
a speed improvement or is it more a function and feature extension ? 
I would say that it is both for speed and for functionality. The ODP data provider has Oracle specific functionality that is not available via the MS data provider.
From the ODP.NET page:
ODP.NET includes many features not available from other .NET drivers, including a native XML data type, the ability to bind array parameters, RAC tuning, and statement caching. 
Also, take a look at this page. It explains why ODP.NET is faster and the main functionality differences between ODP.NET and other providers:
Here is another article, rather old but still relevant.

oracle asp.net providers source code

Is there a reason why the source code of the asp.net providers is no available?
In my case, I would like to inherits from the oracle membership and add one or two properties to it. But, as the stored procedures code is wrapped, I have to rewrite all the sp. The stored procedures for the sql server membership are available as part of the .net Framework. It would be great if it was the same with the oracle implementation.
Best regards,
Edited by: lnu on 21 févr. 2011 05:27 
The ASP.NET provider source code isn't available because the Oracle product is meant to be used as an API, not an SDK. The ASP.NET provider API is a standardized Microsoft spec. It is not meant to be modified by individuals. Otherwise, Microsoft or third-party ASP.NET services and controls that rely on the standardized behavior would break. In addition, supporting and documenting an SDK versus a regular API are two very different things. The former is much more difficult, especially when only a small minority want to change the ASP.NET provider source code themselves.

Integration of ODP.NET in Enterprise Applications

I'm considering using Oracle 11g for various Enterprise Applications (C#, WCF Services).
So I would like to discuss the best way of integrating ODP.NET in C#.
My domain model provides e.g. following object Report : IEntity<Report>.
I usually retrieve Oracle user defined type object (or collection types) form stored procedures.
Currently C# classes generated by Oracle Visual Studio Tools are used as entity classes.
What about using some ORM framework in C#?
It seems that e.g. Entity Framework can use stored procedures when they return a ref cursor to the rowset.
So what about these options?
- Entity Framework (ref cursor out parameter only)
- NHibernate(ref cursor out parameter only)
- Dapper Micro ORM
- Classic ADO.NET data access layer
The Classic ADO.NET contains a static DB proxy class that e.g. exposes a generic Read<T>() method).
And appropriate delegates for fetching and mapping an UDT object to domain object. Maybe AutoMapper?
Which data access strategy would you choose for a nice domain-driven-design C# application?
Repositories with Classic ADO.NET data access? 
From my personal experience, if you're intent on using stored procedures for everything there isn't much to gain from using Entity Framework. The largest benefit from it is that you can eliminate stored procedures for common CRUD operations, and only need to use them for uncommon things. If you've already got them or plan on using stored procedures for your standard CRUD operations, vanilla ADO.net will give you better performance for not a lot more work. Now if you aren't married to the procedures, EF (and probably the other ORMs, haven't used them) can save you a boatload of development effort & complexity. (Those savings are significant, in the last project I worked on using EF I cut the time to develop the database access layer by about 2/3 over an all stored procedure method we used previously.)
Beyond that, if you're using a repository model then no matter which method you use, you'll need some kind of interface on top of it so the application is going through that (you won't be exposing the EF context directly). Automapper is great for handling the mapping of domain objects and the DB classes, yeah. It's actually possible to use the EF generated classes for this if you're using the DbContext POCO generator, though it's not best practice. 
Yes you are right. There is no/little gain from using ORM with stored procedures. At present I'm "married" with the procedures. But ref cusors might help.
Some ORM (NHibernate, Dapper, etc.) support ref cursors returned by stored procedures.
But otherwise plain ADO.NET with appropriate mapping between domain objects and generated UDT objects may be the best solution.
In this case automapper might prove helpful. 
EF supports stored procedures with out cursors as well, though in Oracle's implementation some extra configuration is required (just how much seems to depend on what you're returning, I found it works fairly easily if your procedure is returning a full entity).

OO4O in NET framework

As there is no immediate plan to make object-relational features in ODP.NET, does Oralce plan to release any bridge to make OO4O accessible from .NET framework? 
You can already use OO4O in .NET through COM Interop. Right click on References/Add References.
Then choose the COM tab and select the Oracle InProc Server.
There you go!
You noticed that all classes have been prefixed with "Class". So the session object is now called "OraSessionClassClass".
For some reasons, almost all functions in OO4O returns objects. So, if you're in C# or in VB.NET with the strict option on, you'll have some type casting to do.
But if you need Oracle advanced features, please try ODP.NET. From the tests I ran here, it's at least twice faster than OO4O.
Indeed ODP is much easier for developing with .net.
The typecasting needed to be done for OO4O is very annoying (especially because the documentation is not comprehensive and one should guess what types are expected or returned in any function or property).
Do you know about better documentation for OO4O?
Can ODP substitute OO4O?
What about objects access (I have a special interest in SDO objects)?