I am currently doing a project utilizing NHibernate to connect to a legacy Oracle DB. Everything was nice and easy until I hit this problem. I need to retrieve a particular information, but to do this I must connect a number of tables. This means I need to create more persistent classes, more mapping files, which is sucks because I can actually just execute a stored function and get what I need.
So after scratching my head for quite sometimes, I found out that the solution was quite simple.
Using sessFact As ISessionFactory = CreateSessionFactory() Using sess As ISession = sessFact.OpenSession() Using transact As ITransaction = sess.BeginTransaction() '.... Dim con As IDbConnection = sess.Connection Dim cmd As IDbCommand = con.CreateCommand() sess.Transaction.Enlist(cmd) cmd.CommandText = "select MyPackageName.MyFunction(" & myFunctionParam & ") from dual" dim objResult as Objetc = cmd.ExecuteScalar() '..... End Using End Using End Using
I know this is not the right way, but I need to make compromise considering that this is a legacy database.