Question

I've had a look at some of the other posts on the topic but most seem to be dealing with selects. I've got a stored procedure that does a number of deletes and checks and simply takes in one int as an argument and returns a bit for success. I want to fire this off from my code using fluent nHibernate from sharp architecture.

Any Ideas on how best to tackle this? Thanks

Was it helpful?

Solution

You cannot map stored procedures with FluentNHibernate yet (AFAIK). You need an xml mapping like this (SQL-Server):

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="Your.Xml.Mappings.Namespace">
  <sql-query name="DeleteSomeEntity" >
    exec dbo.deleteSomeEntityProc ?
  </sql-query>
</hibernate-mapping>

The return value will probably be an ArrayList of object[] if you call it with NHibernate. Notice the '?' argument, which will take your id. The name to call will be "DeleteSomeEntity" Also remember, that you'll have to name the file with the convention ".hbm.xml" and you need to include it as an embedded resource in your project!

For FluentNHibernate to load the file, you'll need to call

database = database.Mappings(m => m.HbmMappings.AddFromAssembly(assembly));

on the assembly calling the xml when initializing your mappings.

When you really need the return-type mapped, you can include a <return> or <return-property> declaration in the mapping. I haven't done this, though, you'd have to look it up in the NHibernate reference manual.

HTH.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top