DatabaseFactory和输出参数

时间:2010-03-05 21:56:33

标签: asp.net enterprise-library

我开始使用Enterprise Library并提出以下问题:

1)如何向此查询添加输出参数以及如何将其返回:

public int InsertDoc(HDocument document)
{          
    Database db = DatabaseFactory.CreateDatabase();  
    int result;
    var reader = db.ExecuteNonQuery("sp_InsertDocument", 
                document.AddedDate,document.AddedBy, document.Title))         
     .
     .
     .
}

db.AddOutParameter需要我没有像DbCommand那样的paremetrers。

2)我有一些方法可以使用数据库(我从ADO.net传输)存储过程,  我必须声明:Database db = DatabaseFactory.CreateDatabase();在每一个或我可以重复使用它?

1 个答案:

答案 0 :(得分:1)

1) - 你可以这样做一个DbCommand:

DbCommand dbCommand = db.GetSqlStringCommand("sp_InsertDocument");

并在执行后检索输出参数:

db.GetParameterValue(dbCommand, "outputParameterName");

这是使用EntLib执行带有输出参数的sproc的一个很好的例子: http://www.devx.com/dotnet/Article/30910/0/page/4

2) - 你可以在每个方法中使用DatabaseFactory.CreateDatabase(),没关系。 EntLib将根据需要管理连接。 顺便说一句,如果你只是在一个方法中使用db变量一次,那么你可以通过使用内联temp而不是声明一个变量来轻微地简化你的代码,即:

var reader = DatabaseFactory.CreateDatabase().ExecuteNonQuery(....