我开始使用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();在每一个或我可以重复使用它?
答案 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(....