2010-03-05 50 views
0

我使用企业库,并开始有以下问题:DatabaseFactory输出参数

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需要paremetrers,我没有像DbCommand一样。我有几个方法可以使用数据库(我从ADO.net转移)存储过程, 我必须声明:Database db = DatabaseFactory.CreateDatabase();在他们中的每一个中,或者我可以重复使用它?

回答

1

1) - 你可以让正是如此一个的DbCommand:

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

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

db.GetParameterValue(dbCommand, "outputParameterName"); 

下面是使用EntLib执行与输出一个存储过程的一个很好的例子params: http://www.devx.com/dotnet/Article/30910/0/page/4

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

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