Since you're going through the trouble of altering the database you might as well also reconfigure NHibernate at the same time (i.e create a new SessionFactory to replace the existing), and add the new columns to a DynamicComponent mapping. That way you won't have to deal with this complexity.
/G 2015-12-03 20:55 GMT+01:00 Felipe Oriani <[email protected]>: > Hello guys, I have a problem using NHibernate, but first let me explain > the scenario. > > We have a web application which allows the user to manage fields over the > entities. For sample, we have a City table with fixed columns (Id, Name and > State), then user can define new columns on the entity (city) by a > configuration scren we have developed. This configuration screen runs some > sql statements to manage the fields (Alter Table to create an drop columns > on the tables) which we call as "flex field". > > However, these flex fields are no mapped by nhibernate, so, we need to > manage the information on these fields manually by sql statement. The code > bellow shows how we do it in a scenario when we are creating a new entity > (city): > > // start a transaction from asp.net mvc attribute (ActionExecuting) > var transaction = session.BeginTransaction(); > > // save a new entity on the data layer > session.Save(city); > > // get a IDbCommand instance to manage the flex fields > var cmd = session.Connection.CreateCommand(); > > // define the sql update to update the flex fields passing the id of > the entity > cmd.CommandText = "update city set flex1=@flex1, flex2=@flex2 where id > = @id"; > > // define all the parameters on the cmd here... > > // add the command on the nhibernate transaction object > transaction.EnList(cmd); > > // execute the command > cmd.ExecuteNonQuery(); > > // commit the transaction on the asp.net mvc attribute (ActionExecuted) > transaction.Commit(); > > When we run this code, everything executes without any error. If we are > updating a existent entity (City) the flex fields are updated fine, but the > problem is when we are inserting a new entity (City), the update statement > executed by command is not being executed, and we get all the flex field > with null values. > > I supose when we are inserting, the command is been performed before the > insert (on commit). Is there any way to force the commands on EnList > Transaction be executed after all others statements, but on the same > transaction? > > Thank you. > > > > > -- > ______________________________________ > Felipe B Oriani > [email protected] > > -- > You received this message because you are subscribed to the Google Groups > "nhusers" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To post to this group, send email to [email protected]. > Visit this group at http://groups.google.com/group/nhusers. > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "nhusers" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/nhusers. For more options, visit https://groups.google.com/d/optout.
