2013-04-26 2 views
1

Je travaille sur MVC3 et Entity Framework 4.1, j'ai une couche Business et une couche d'accès aux données. Depuis que j'ai beaucoup de logique métier pour la validation des affaires, j'appelle la couche d'accès aux données de la couche de gestion et je fais la validation. J'ai besoin de vérifier les données de la base de données. Donc, pour faire ma transaction je passe par beaucoup de conditions et toutes les conditions sont dans une seule méthode (b/c de validation de la base de données mon code de validation est aussi en DAL) j'ai refactorisé le code autant que je le peux Regarde grand à propos de 160 lignes.Meilleure pratique de l'implémentation de la logique applicative

Quelqu'un peut-il me dire quelle sera la meilleure approche devrait être, de sorte que mon code sera facilement gérable et extensible.

Merci

Répondre

1

Je recommanderais d'utiliser des validations personnalisées. Lorsque vous pensez que vous préférez la maintenabilité à la vitesse (généralement une bonne idée): Les données ne doivent pas être accessibles directement à partir de la couche d'interface utilisateur. votre couche d'entreprise doit contenir toute votre logique métier, votre validateur doit faire appel à votre couche de gestion. Note avec ces couches d'abstraction, vous faites du commerce vitesse maintenabilité (vaut bien le commerce si vous me demandez)

Voici un extrait qui devrait vous aider à démarrer à partir d'ici: Creating custom data annotation validation in MVC 3

public class EmployeeViewModel 
{ 

    [CustomValidation(typeof(EmployeeViewModel), "ValidateDuplicate")] 
    [Required(ErrorMessage = "Username is required")] 
    [DisplayName("Username")] 
    public string Username { get; set; } 

    public static ValidationResult ValidateDuplicate(string username) 
    { 
     bool isValid; 

     using(var db = new YourContextName) { 
     if(db.EmployeeViewModel.Where(e => e.Username.Equals(username)).Count() > 0) 
     { 
      isValid = false; 
     } else { 
      isValid = true; 
     } 
     } 

     if (isValid) 
     { 
     return ValidationResult.Success; 
     } 
     else 
     { 
     return new ValidationResult("Username already exists"); 
     } 

    } 
} 
+1

problème est que le code n'appelle pas seulement du contrôleur, Son appel du service de WCF aussi, ainsi je ne peux pas faire la manière que vous suggérez. –

+0

en attente de réponse .... –

+0

Cela peut aider: http://forums.asp.net/t/2009500.aspx?Use+Validation+using+Data+Annotation+with+WCF –

Questions connexes