web-dev-qa-db-fra.com

Entier Framework 6 Code First Trigger

J'utilise Entity Framework 6 Code First, et je voudrais créer un déclencheur.

Comment puis-je faire cela?

La raison pour laquelle j'ai besoin du déclencheur est qu'un utilisateur peut modifier la base de données directement ou via un programme que j'écris, et je dois m'assurer que 2 colonnes dans une table ne sont pas toutes les deux nulles et ne sont pas toutes les deux non nulles.

J'ai cherché et je ne trouve pas de moyen.

Existe-t-il un moyen de spécifier un déclencheur en utilisant d'abord du code?

22
Charles W

Entity Framework ne prend pas en charge les déclencheurs, bien que vous puissiez certainement exécuter manuellement une instruction qui créerait un déclencheur, mais vous devrez le faire après la création de la table (si vous utilisez des migrations).

Vous pouvez utiliser la technique spécifiée par Ladislav dans code EF 4.1 ajoutant d'abord un déclencheur à une table

Prenez note de son avertissement, cependant, EF ne sera au courant d'aucune modification apportée au déclencheur. Si votre intention est simplement de vous assurer que 2 colonnes dans une table ne sont pas nulles, vous seriez mieux servi avec une contrainte (les contraintes ne sont pas non plus prises en charge par EF, mais vous pouvez les ajouter manuellement).

22
Erik Funkenbusch

Consultez ma bibliothèque EntityFramework.Triggers . Il fonctionne sur la couche Entity Framework, de sorte que les événements de déclenchement ne se déclenchent pas si quelqu'un modifie directement la base de données. Le lien NuGet est https://www.nuget.org/packages/EntityFramework.Triggers/

15
Nick Strupat

Après avoir ajouté une migration, ouvrez le fichier de migration et créez votre déclencheur comme indiqué ci-dessous

Remarque: vous devez exécuter update-database pour voir les changements dans votre base de données.

enter image description here

1
user2662006