Code d’abord – Les annotations de données ou l’API Fluent sont-elles meilleures?

Je me demande quelle est la meilleure façon de configurer mon modèle?

J’aime l’API Fluent, car alors mes POCO ne sont pas remplis d’atsortingbuts spécifiques à EF.

Y a-t-il quelque chose que vous ne pouvez pas faire avec l’API Fluent que vous pouvez avec les atsortingbuts?

Tout ce que vous pouvez configurer avec DataAnnotations est également possible avec l’API Fluent. L’inverse n’est pas vrai. Ainsi, du sharepoint vue des options de configuration et de la flexibilité, l’API Fluent est “meilleure”.

Exemples de configuration (certainement pas une liste complète) possibles dans l’API Fluent mais pas avec DataAnnotations (pour autant que je sache):

  • Désactivez les suppressions en cascade:

    .WillCascadeOnDelete(false)

  • Spécifiez le nom de la colonne de clé étrangère dans la firebase database lorsque la clé n’est pas exposée dans votre modèle d’object:

    .Map(conf => conf.MapKey("MyForeignKeyID"))

  • Réglage fin et précis des relations, en particulier dans tous les cas où un seul côté d’une association est exposé dans le modèle d’object:

    .WithMany(...) , WithOptional(...) , WithRequiredDependent(...) , WithRequiredPrincipal(...)

  • Spécification du mappage d’inheritance entre le modèle d’object et les tables de firebase database (Table-Per-Hierarchy, Table-par-Type, Table-Par-Concrete-Class):

    .Map(Action> ...)

Edit: Microsoft considère l’API Fluent comme une “fonctionnalité avancée” (citation d’ ici ):

L’API fluide est considérée comme une fonctionnalité plus avancée et nous vous recommandons d’utiliser les annotations de données, sauf si vos exigences vous obligent à utiliser l’API fluide.

Mais à mon avis, vous atteignez très rapidement les limites de DataAnnotations (sauf peut-être pour des modèles d’objects extrêmement simples). Si vous ne pouvez plus ajuster votre modèle avec DataAnnotations, votre dernier recours consiste à suivre les conventions de mappage par défaut (en nommant vos propriétés conformément à ces règles). Actuellement, vous ne pouvez pas écraser les conventions (les désactiver uniquement; MS a annoncé des options de configuration pour les conventions dans les futures versions d’EF). Mais si vous ne voulez pas être forcé par les conventions de mappage lorsque vous définissez votre modèle d’object, votre seule option est l’API Fluent.

L’apprentissage de l’API Fluent est quasiment indispensable, les DataAnnotations sont un outil pratique pour les applications simples.