Utilisation de l'effort (outil de test EF) avec la colonne calculée


Question

J'ai un certain nombre de tests d'intégration qui accèdent directement à la base de données - créer des objets de test prérequis - effectue les tests puis nettoie par la suite - mais je n'avais pas l'habitude d'essayer la même approche en mémoire.

Je viens d'utiliser Effort dans mon projet et cela fonctionne très facilement. Cependant, j'ai rencontré un problème que j'ai essayé - mais incapable de résoudre.

L'une des tables dont j'ai besoin doit être remplie avec des données factices (en tant que condition préalable au test) contient une colonne calculée (nvarchar, pas null). Pour ce qui est de la portée du test, la valeur de cette colonne ne m'intéresse pas vraiment - mais même si j'essaie d'insérer des données factices, mes données sont ignorées et une erreur me frappe:

"Column 'x' cannot be null. Error code: GenericError"

Dans mes tests, j'utilise le même fichier edmx que celui utilisé par le code actuel. Cela m'empêche de mettre à jour constamment la copie edmx.

Existe-t-il un moyen de forcer le test à mettre à jour edmx (au moment de l'exécution) afin que cette colonne soit une colonne non calculée pouvant être nullée? [écrasant OnModelCreating] ou existe-t-il un moyen d'insérer une valeur par défaut (tout va pour cette colonne) pour arrêter cette erreur? [contournant SaveChanges]

J'ai actuellement essayé ce qui suit:

  • Attacher les objets en utilisant .Attach () au lieu de .Add ()
  • Paramétrer EntityState sur Unchanged après l'ajout
  • Forçage de la valeur via Entry.OriginalValues ​​[cette valeur puisque l'entité est dans l'état Added]

Modifier:

J'ai essayé de surcharger la méthode OnModelCreating , mais en vain puisqu'il s'agit de DB-First.

"Column 'x' cannot be null. Error code: GenericError"

Réponse populaire

Ouvrez votre fichier EDMX dans l'éditeur XML, recherchez votre entité sous StorageModels et ajoutez-le à la définition de colonne StoreGeneratedPattern="Computed" .

Mais si vous mettez à jour ou supprimez et ajoutez cette table, vous perdrez cette modification. En fait, vous pouvez écrire une application console qui mettra à jour votre fichier edmx et ajoutera StoreGeneratedPattern="Computed" si nécessaire et vous pourrez ajouter ces applications aux événements de pré-construction en studio.





Sous licence: CC-BY-SA
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi