2009-04-12 8 views
2

J'utilise EntitySpaces pour tout le codage lié à la base de données. En tant que développeur unique, je n'ai pas le temps de m'asseoir et d'écrire le SQL pour chaque application que j'écris, donc l'utilisation d'un générateur tel que ES Suites me permet d'économiser des jours, voire des semaines.C# - Quelle est la bonne gestion des erreurs SQLException pour les délais d'attente et les connexions échouées

J'écris généralement une série de classes auxiliaires pour chacune des tables que mon application utilise. Le problème que j'ai, c'est que je ne connais pas vraiment la meilleure façon de gérer les délais SQL ou les connexions échouées, en dehors de coller un essai-catch autour de chaque méthode qui traite des données de retour.

Dans EntitySpaces, la connexion SQL est créée et exécutée uniquement lorsque j'exécute tout type de commande CRUD.

Par exemple:

public TblUserCollection GetCollection() 
    { 

     TblUserCollection collection = new TblUserCollection(); 
     collection.Query.Where(collection.Query.CompanyId == CompanyId); 
     collection.Query.OrderBy(collection.Query.FullName, esOrderByDirection.Ascending); 
     collection.Query.Load(); 

     return collection; 

    } 

Cette méthode est appelée lorsque ma classe d'aide est dit d'attribuer la liste des utilisateurs d'une certaine société à un ComboBox. La méthode appelle alors ceci et j'assigne les données à la liste. J'ai environ 30 de ces points, tous appelés GetCollection() dans les classes auxiliaires spécifiques à la table.

Mis à part en train d'écrire la méthode que:

public TblUserCollection GetCollection() 
    { 

     try 
     { 

      TblUserCollection collection = new TblUserCollection(); 
      collection.Query.Where(collection.Query.CompanyId == CompanyId); 
      collection.Query.OrderBy(collection.Query.FullName, esOrderByDirection.Ascending); 
      collection.Query.Load(); 

      return collection; 
     } 
     catch (System.Data.SqlClient.SqlException ex) 
     { 
      // 
     } 

    } 

Que puis-je faire d'autre?

Répondre

1

Définir une classe de base pour gérer votre gestion des erreurs SQL et laisser toutes vos classes ex. TblUserCollection implémente cette classe de base. Ainsi, lorsque vos classes enfant lancent des exceptions sql, vous pouvez faire en sorte que la classe de base les gère avec des sorties gracieuses

Avez-vous essayé Subsonic (version gratuite) et LLBLGen (version commerciale). Les deux vont générer le DAL et quelques composants Web pour vous. Etes-vous heureux avec Entityspaces? Votre réponse m'aidera avec mes propres projets.

+0

J'ai utilisé EntitySpaces et LLBLGen pendant quelques années. Je préfère de loin EntitySpaces. C'est tellement plus facile et lit beaucoup plus que SQL que LLBLGen. Le Web Grid de ES inclus est également incroyablement bon et peut vous faire gagner beaucoup de temps. – GenericTypeTea

+0

C'est génial. Merci pour votre contribution –

0

Cela ne répond pas vraiment à votre question, mais vous pourriez essayer d'apprendre LINQ. Il pourrait faire ce code:

public TblUserCollection GetCollection() 
{ 

    TblUserCollection collection = new TblUserCollection(); 
    collection.Query.Where(collection.Query.CompanyId == CompanyId); 
    collection.Query.OrderBy(collection.Query.FullName, esOrderByDirection.Ascending); 
    collection.Query.Load(); 

    return collection; 

} 

beaucoup plus lisible dans mon esprit.

+0

@Lucas: la variable spécifie ".net2.0". Donc, LINQ pourrait être hors de question pour cela. – Sung

+0

Oh, n'a pas regardé cela de près. Belle prise! – Kredns

+0

et s'il a fait comme vous le suggérez, alors il devrait lire dans vos pensées! ;-) –

0

L'approche conventionnelle consisterait simplement à laisser l'exception se propager à partir de votre méthode GetCollection. Vous ne voulez généralement pas renvoyer ce qui peut être une collection incomplète.

Ensuite, peut-être au niveau supérieur de votre niveau de présentation, vous pourriez attraper l'exception, par exemple. offrir à l'utilisateur la possibilité de réessayer.

Questions connexes