Si votre projet est volumineux, je vous recommande de suivre Domain Driven Development. Chaque classe de domaine comprend un certain nombre de composants: propriétés d'entité EF, injection de propriétés pour les comportements (mise en forme des données, analyse, conversion, copie, validation, configuration).
Si vous suivez le principe de la responsabilité unique, chaque classe ne devrait avoir qu'une seule responsabilité. Les classes de modèle EF doivent être destinées à stocker des données et à communiquer avec l'infrastructure EF pour générer le code SQL d'exécution. Les autres classes se chargeront du formatage, de la conversion, de la validation et du transfert.
Lorsque le nombre de types augmente, vous devez les centraliser ou les organiser en utilisant le modèle de façade. Ces façades sont des types spécifiques au domaine. Donc, si vous commencez à générer des modèles EF, puis créez les types de support (formateurs, validateurs, ...), et enfin créez des types de domaines, vous n'aurez pas plus de possibilités de collaboration et de distribution que vous auriez pu en inversant.Construisez d'abord vos types de domaine, construisez des modèles et des tests unitaires, puis partagez-les avec vos pairs pour leur permettre de connecter les fonctions de l'objet domaine aux modèles EF. C'est ainsi que vous pouvez faire du développement piloté par le domaine.
u Merci pour une bonne explication. Mais je ne parle pas d'utiliser ViewModel. Je parle de la création d'un nouveau calque "Ou pneu" entre ViewModel et le modèle EF "My Business Model layer". Ce genre de séparation est-il bon ou juste un travail supplémentaire? –
C'est presque toujours du travail supplémentaire. Oui, vous pouvez et devriez peut-être créer une autre couche dans vos classes que vos services utilisent pour créer vos ViewModels/etc, mais la création d'un nouveau niveau entier où vous devez rassembler un autre type d'objet dans un AppDomain est presque toujours une erreur - un que vous payez souvent cher quand il s'agit de performances et d'évolutivité. –
Je suis d'accord avec Dave. J'ai seulement utilisé EF sur de petits projets jusqu'à présent, mais je n'ai pas encore trouvé le besoin d'une couche distincte d'objets de gestion; les entités EF ont toujours été suffisamment flexibles pour agir en tant que BO. –