2010-06-09 99 views
0

我正在使用以下代码片断使用存储过程插入值。该代码正在成功执行,但没有在DB中插入记录。使用存储过程从nhibernate插入

请用简单的例子来建议。

**---- stored procedure--------** 
Create PROCEDURE [dbo].[SampleInsert] 
    @id int, @name varchar(50) 
AS 
BEGIN 
    insert into test (id, name) values (@id, @name); 
END 

**------.hbm file-------** 
<?xml version="1.0" encoding="utf-8" ?> 
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"> 
    <sql-query name="Procedure"> 
    exec SampleInsert 
    :Id,:Name 
    </sql-query> 
</hibernate-mapping> 

**--------c# code to insert value using above sp------** 
ISessionFactory sessionFactory = new Configuration().Configure().BuildSessionFactory(); 
ISession session = sessionFactory.OpenSession(); 
IQuery query = session.GetNamedQuery("Procedure"); 
query.SetParameter("Id", "222"); 
query.SetParameter("Name", "testsp"); 
query.SetResultTransformer(new NHibernate.Transform.AliasToBeanConstructorResultTransformer(typeof(Procedure).GetConstructors()[0])); 

问候 Jcreddy

回答

0

首先,当你执行查询?

其次,该SP不会返回任何内容,您将添加该ResultTransformer为什么?

的代码应该是这样的:

session.GetNamedQuery("Procedure") 
     .SetParameter("Id", "222") 
     .SetParameter("Name", "testsp") 
     .ExecuteUpdate()