Question

OK, Je veux continuer à utiliser le modèle de schéma de EF 4.0, mais je veux aussi l'API et la flexibilité de EF 4.1.

Alors, dans mon application, j'ai ajouté le code de génération DbContext de mon actuelle EF 4.0 modèles.

Maintenant, mes questions est ce que sont mes options pour valider mon DbSet (EF 4.1) modèles sans les faire anéanties?

DataAnnotation ne semble pas couper parce que chaque fois que je mets à jour mon modèle visuel, il complet efface toutes mes modifications.

  • J'ai entendu parler des classes partielles, mais qui semble être vraiment désordre.
  • Je ne veux pas vraiment faire sur mon contrôleur de validation.
  • Je veux que ce soit évolutif, donc je peux facilement transférer mes classes de asp.net MVC à WPF et etc.

Est-il possible de le faire? référentiel de validation? couche de validation indépendante? Validation à l'intérieur des couches du référentiel? Des exemples seraient appréciés aussi.

S'il vous plaît aidez-moi. Merci:)

Était-ce utile?

La solution

en utilisant un générateur de modèle, il semble possible de faire une des opérations suivantes:

  1. Créer une classe de contacts pour chacun de vos entités, et de définir la classe de contacts par convention de nommage dans le modèle.
  2. trouver un moyen de génération des annotations de données, en les stockant dans une source distincte ou quelque chose.

Ou, utilisez une couche séparée. Si vous utilisez des référentiels, vous pouvez intégrer il validation. J'ai choisi d'avoir une usine de validation Orm, qui tire dans les règles correspondant à une entité (soit statique ou dynamique), et l'usine fait le travail (depuis que de plus le long des lignes du principe de la responsabilité singulière).

HTH.

Autres conseils

Dans mon projet, je mélange les deux 4.1 et 4.0 contextes. Il est possible de faire une migration lente. Il y a aussi un cadre d'entité 4.1 extension de l'ingénierie inverse qui peut être ajouté à visual studio. (Pour vous permettre d'utiliser 4.1 par génération de code objets poco + mappages à partir de votre base de données existante).

Je ne recommande pas la création d'un DbContext qui expose edmx modèles générés de 4,0. Vous perdez également les avantages de héritant ObjectContext / dbcontext, propriétés héritant (versioning de ligne, ect), et le contrôle de l'objet poco (code non généré de sorte que vous n'avez pas à vous soucier partials + attribut metadatatype comme dans la version 4.0)

Votre question relative à la validation de schéma créé avec ef4.0:

Pour que les données annotations ne sont pas complètement effacées lors de la mise à jour de votre modèle, vous devez utiliser l'attribut MetadataType.

http://msdn.microsoft.com/ fr-fr / bibliothèque / system.componentmodel.dataannotations.metadatatypeattribute.aspx

qui a, par exemple,

Je ne sais pas pourquoi MS enseigne programmeurs ces mauvaises pratiques. En particulier, à l'aide d'annotations de données pour la cartographie dans EF 4.1 a été la décision de conception vraiment stupide (par exemple LINQ to SQL utilisé attributs distincts définis pour faire une séparation claire entre la cartographie et de validation).

annotations de données sont utilisées pour les données validate de l'entrée d'utilisateur et l'entrée d'utilisateur est vue / contrôleur des choses liées où chaque vue peut avoir besoin de différentes règles de validation => si vous voulez utiliser les annotations de données ces règles appartient au modèle de vue non à l'entité.

Dans les cas les plus simples où l'entité est vue et 1: 1, vous pouvez utiliser les annotations de données directement, mais qui est vraiment pour les applications les plus simples et une fois que vous faites une simple application telle que vous pouvez utiliser la plupart probablement des données dynamiques ASP.NET directement et laissez-cadre créer toutes les pages pour vous en fonction de votre modèle d'entité.

ASP.NET Dynamic Data montre également comment appliquer des annotations de données pour les entités générées dans classes de copain .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top