xie*_*ils 2 sql-server nhibernate stored-procedures
1.Database平台:SqlServer
2.Data Access:nHibernate 1.2
现在我们需要通过nHibernate访问存储过程,如下所示:
ALTER PROCEDURE TestProc()
AS
BEGIN
Select * From User
Return 1234
END
Run Code Online (Sandbox Code Playgroud)
我知道我可以通过IQuery获取用户列表,并且我也想获得默认返回值"1234".
题:
NHibernate不允许您以这种方式使用存储过程.但它确实允许使用普通的旧ADO.NET API进行调用.该NHibernate的文件说,如果你想使用这些程序,您必须通过session.Connection执行它们.这是一个例子 -
ISession session = sessionFactory.GetSession();
using(ITransaction transaction = session.BeginTransaction())
{
IDbCommand command = new SqlCommand();
command.Connection = session.Connection;
// Enlist IDbCommand into the NHibernate transaction
transaction.Enlist(command);
command.CommandType = CommandType.StoredProcedure;
command.CommandText = "dbo.SetUserInfo";
// Set input parameters
var parm = new SqlParameter("@UserID", SqlDbType.Int);
parm.Value = 12345;
command.Parameters.Add(parm);
// Set output parameter
var outputParameter = new SqlParameter("@Quantity", SqlDbType.Int);
outputParameter.Direction = ParameterDirection.Output;
command.Parameters.Add(outputParameter);
// Set a return value
var returnParameter = new SqlParameter("@RETURN_VALUE", SqlDbType.Int);
returnParameter.Direction = ParameterDirection.ReturnValue;
command.Parameters.Add(returnParameter);
// Execute the stored procedure
command.ExecuteNonQuery();
}
Run Code Online (Sandbox Code Playgroud)
你可以在这里找到更多细节 -
http://refactoringaspnet.blogspot.com/2009/06/how-to-use-legacy-stored-procedures-in.html
| 归档时间: |
|
| 查看次数: |
11096 次 |
| 最近记录: |