2010-03-05 3 views
0

j'ai commencé à utiliser Enterprise Library et ont les questions suivantes:DatabaseFactory et paramètre de sortie

1) Comment puis-je ajouter le paramètre de sortie à cette requête et comment puis-je récupérer:

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

Le db.AddOutParameter nécessite des parémétriques que je n'ai pas comme DbCommand.

2) J'ai quelques méthodes qui fonctionnent avec des procédures stockées de base de données (je transfère d'ADO.net), dois-je déclarer: Base de données db = DatabaseFactory.CreateDatabase(); dans chacun d'entre eux ou je peux le réutiliser?

Répondre

1

1) - Vous pouvez faire un DbCommand ainsi:

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

et récupérer le paramètre de sortie après l'exécution avec:

db.GetParameterValue(dbCommand, "outputParameterName"); 

est ici un bon exemple d'utilisation EntLib pour exécuter une procédure stockée avec sortie params: http://www.devx.com/dotnet/Article/30910/0/page/4

2) - Vous pouvez utiliser DatabaseFactory.CreateDatabase() dans chaque méthode, c'est très bien. EntLib gérera les connexions si nécessaire. En aparté, si vous n'utilisez la variable db une fois dans une méthode, vous pouvez simplifier votre code légèrement en utilisant une température en ligne au lieu de déclarer une variable, i.e. .:

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