The code really work out nicely :-D Really thanks a lot Gerdus, I really appreciate your help. God bless you friend :-)
On 4 Sep, 14:04, Gerdus van Zyl <[email protected]> wrote: > Yeah I'm a vb.net programmer too, so I feel your pain :-) > The code does not translate directly because vb in .net 3.5 does not > have multi line lambdas. > So anyway the code translated to vb.net looks like this: > > Private Function _executeDelegate(ByVal session As > NHibernate.ISession, ByVal sql As String) As Object > Dim con As IDbConnection = session.Connection > Dim cmd As IDbCommand = con.CreateCommand() > > If session.Transaction.IsActive Then > session.Transaction.Enlist(cmd) > End If > > cmd.CommandText = sql > cmd.CommandType = CommandType.Text > cmd.CommandTimeout = 5 > > Dim ret As Object > ret = cmd.ExecuteScalar() > > Return ret > End Function > > Public Function getSQLvalueMediatorExecute(ByVal sql As String) As Object > Return ActiveRecordMediator.Execute(GetType(ActiveRecordBase), > Function(session As NHibernate.ISession, data As Object) > _executeDelegate(session, sql), Nothing) > End Function > > Hope this helps. > > ~Gerdus > > > > On Fri, Sep 4, 2009 at 8:14 AM, the.wizard<[email protected]> wrote: > > > Now I get it, but I can't translate the C# code in the link to VB.NET. > > How to use the delegate keyword in VB.NET? > > Is the link has a VB version? > > Really thanks a lot Gerdus. > > > Regards. > > > On 3 Sep, 18:04, Gerdus van Zyl <[email protected]> wrote: > >> Just use the code given in the blog (ActiveRecordMediator.Execute) > >> inside ExecSPNonQueryForTransaction and remove the pSession parameter. > >> Activerecord knows what the current session is when you use > >> ActiveRecordMediator.Execute. > > >> On Thu, Sep 3, 2009 at 12:55 PM, the.wizard<[email protected]> wrote: > > >> > Hi Gerdus, thank you for the link, but it still can solve my problem. > >> > So here is my code in a static class called ARHelper: > >> > Public NotInheritable Class ARHelper > >> > Public Shared session As NHibernate.ISession > >> > Public Shared Function ExecSPNonQueryForTransaction(ByVal SPName > >> > As String, _ > >> > ByVal pSession > >> > As NHibernate.ISession, _ > >> > ByVal > >> > ParamArray SPParameters() As IDataParameter) As Integer > >> > Dim count As Integer = 0 > >> > session = pSession > >> > Dim command As IDbCommand = session.Connection.CreateCommand() > >> > command.CommandText = SPName > >> > command.CommandType = CommandType.StoredProcedure > >> > For Each param As IDataParameter In SPParameters > >> > command.Parameters.Add(param) > >> > Next > >> > count = command.ExecuteNonQuery() > > >> > Return count > >> > End Function > >> > End Class > > >> > Now in one of my aspx page, I write something like this: > >> > Protected Sub btnCreateDinner_Click(ByVal sender As Object, ByVal e As > >> > EventArgs) Handles btnCreateDinner.Click > >> > Dim transaction As New Castle.ActiveRecord.TransactionScope() > > >> > Try > >> > Dim dinner As New Dinner() > > >> > dinner.Title = txtTitle.Text > >> > dinner.EventDate = Now.AddDays(7) > >> > dinner.Description = txtDescription.Text > >> > dinner.HostedBy = "Castle.Dinner" > >> > dinner.ContactPhone = txtContactPhone.Text > >> > dinner.Address = txtAddress.Text > >> > dinner.Country = txtCountry.Text > >> > dinner.Latitude = 10 > >> > dinner.Longitude = 100 > > >> > ' Didn't need to write this. > >> > ' Provided by ActiveRecordBase > >> > dinner.Save() > > >> > Dim pDinnerID As New SqlClient.SqlParameter() > >> > pDinnerID.ParameterName = "@DinnerID" > >> > pDinnerID.Value = 1 > > >> > Dim pAttendeeName As New SqlClient.SqlParameter() > >> > pDinnerID.ParameterName = "@AttendeeName" > >> > pDinnerID.Value = "UNLUCKY.GUY" > > >> > ARHelper.ExecSPNonQueryForTransaction("spr_InsertRSVP", > >> > transaction.GetSession(transaction), pDinnerID, pAttendeeName) > >> > Catch ex As Exception > >> > transaction.VoteRollBack() > >> > Throw > >> > Finally > >> > transaction.Dispose() > >> > End Try > >> > End Sub > >> > When I run my application, it will result in an exception at > >> > transaction.GetSession(transaction), I really confuse what to put as > >> > the parameter for GetSession method. > >> > Anybody please help me. > >> > Thanks a lot. > > >> > Regards. > > >> > On 2 Sep, 20:21, Gerdus van Zyl <[email protected]> wrote: > >> >> The code I gave is probably wrong since it does not use the current > >> >> session I think. (I have moved on from using activerecord sessions and > >> >> now just use AR for mapping,config and handle nhibernate sessions > >> >> directly) > > >> >> Anyway see this blog post I just > >> >> found:http://www.kenegozi.com/Blog/2008/02/28/executing-plain-ol-sql-in-act... > > >> >> ~G > > >> >> On Wed, Sep 2, 2009 at 12:36 PM, the.wizard<[email protected]> > >> >> wrote: > > >> >> > Hello Gerdus, > >> >> > Thank you for replying my post. I still don't understand what you are > >> >> > explain in your post, please explain it more detail. > >> >> > My goal is to save a data using active record object and execute a dml > >> >> > stored procedure in one db transaction. > >> >> > I have create a method that accept ISession object from parameter, > >> >> > then retrieve the command object from the ISession object. After that > >> >> > the command object will be use with ADO.NET to execute a dml stored > >> >> > procedure (using executenonquery method). > >> >> > Then I create a transactionscope just like you explain, but then I can > >> >> > get the session object from this transactionscope object. It has a > >> >> > GetSession method, but it need one parameter, a key that is an object > >> >> > type which I don't know what should I put for get it working. Have > >> >> > tried a lot but all failed getting an exception. > >> >> > Please help me, thanks a lot. > >> >> > Regards, > >> >> > the.wizard > > >> >> > On 2 Sep, 13:50, Gerdus van Zyl <[email protected]> wrote: > >> >> >> I think you need to create a transactionscope yourself like: > >> >> >> TransactionScope transaction = new TransactionScope(); > >> >> >> then you can use and pass it around as you like. Or what am I > >> >> >> missing? > > >> >> >> And then you need a function like this to get the database connection > >> >> >> and enlist it in the transaction: > >> >> >> Public Function getSQLCommand() As IDbCommand > >> >> >> Dim sess As ISession > >> >> >> 'activerecord kry session wat connection bevat > >> >> >> sess = > >> >> >> ActiveRecordMediator.GetSessionFactoryHolder().CreateSession(GetType(ActiveRecordBase)) > > >> >> >> 'kry connnection vanaf activerecord session en create command > >> >> >> Dim com As IDbCommand = sess.Connection.CreateCommand() > >> >> >> If sess.Transaction.IsActive Then > >> >> >> sess.Transaction.Enlist(com) > >> >> >> End If > > >> >> >> Return com > >> >> >> End Function > > >> >> >> ~Gerdus > > >> >> >> On Wed, Sep 2, 2009 at 3:46 AM, the.wizard<[email protected]> > >> >> >> wrote: > > >> >> >> > Hi everyone, > >> >> >> > Does anyone know how to get the session object in castle active > >> >> >> > record > >> >> >> > when doing a transaction? I want to perform a transaction that > >> >> >> > consist > >> >> >> > of a direct save using Castle Active Record object, and using a > >> >> >> > stored > >> >> >> > procedure, and I need the session object to pass it to my method > >> >> >> > that > >> >> >> > execute my stored procedure. > >> >> >> > Please help me, I have already frustated with this problem, have > >> >> >> > been > >> >> >> > looking all over internet, but can't find one to solve this > >> >> >> > problem. > >> >> >> > Really thanks a lot. > > >> >> >> > Regards.- Sembunyikan teks kutipan - > > >> >> >> - Perlihatkan teks kutipan -- Sembunyikan teks kutipan - > > >> >> - Perlihatkan teks kutipan -- Sembunyikan teks kutipan - > > >> - Perlihatkan teks kutipan -- Sembunyikan teks kutipan - > > - Perlihatkan teks kutipan - --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Castle Project Users" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/castle-project-users?hl=en -~----------~----~----~----~------~----~------~--~---
