I've never used stored procedures with NHibernate, so I can't comment how correct your mapping is; but to use hbm mappings with Fluent NHibernate you need to add them. Fluently.Configure() .Database(configurer) .Mappings(m => { m.FluentMappings.AddFromAssemblyOf<UserCreator>(); m.HbmMappings.AddFromAssemblyOf<UserCreator>(); // loads the embedded resources }) .ExposeConfiguration(BuildSchema) .BuildSessionFactory();
On Mon, Feb 16, 2009 at 8:42 PM, Relleum <sjmuel...@gmail.com> wrote: > > I have a User class that is persisted to a User table in the > database. I would like to use a stored procedure for insertions, > since there is some complex logic that happens in the database. > Since the parameters required by the stored procedure are nowhere > close to the properties of the User class, I am not quite sure how > create the nhibernate mappings. > > My first inclination is to create a new class called UserCreator with > parameters that map to the stored procedure one to one. Then create a > classmap that creates the mappings for the properties. Then, for the > stored procedure part, create a UserCreator.hbm.xml file to add the > <sql-insert> element that will call the stored procedure: > > <?xml version="1.0" encoding="utf-8" ?> > <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="Data" > namespace="Data"> > <class name="NHibernate.Maps.UserCreator, > InterClick.Trafficking.Admin.Data"> > <sql-insert> > EXEC CreateUser @Name = ?, @Pw= ?, @RoleId tinyint = > 0, @FirstName > = ?, @LastName = ?, @Phone = ?, @Email = ? > </sql-insert> > </class> > </hibernate-mapping> > > > The problem is that inserts don't seem to be using the sql-insert > override. It tried to use the standard generated sql and errors with > "System.Data.SqlClient.SqlException: Invalid object name > 'UserCreator'" The UserCreator.hbm.xml Build Action is set to > EmbeddedResource, and is in the same assembly that is used in the > SessionFactory configuration: > > Fluently.Configure() > .Database(configurer) > .Mappings(m => m.FluentMappings > .AddFromAssemblyOf<UserCreator>() > .ExposeConfiguration(BuildSchema) > .BuildSessionFactory(); > > I'm wondering, is this the best way to handle stored procedures that > don't directly map to a class in your domain? Secondly, if this is > the right way, what am I doing wrong that the xml file is not being > picked up by fluent nhibernate? > > > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Fluent NHibernate" group. To post to this group, send email to fluent-nhibernate@googlegroups.com To unsubscribe from this group, send email to fluent-nhibernate+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/fluent-nhibernate?hl=en -~----------~----~----~----~------~----~------~--~---