Un WebJob Azure s'exécute en continu et effectue des opérations CRUD dans ma base de données. J'utilise Entity Framework et UnitOfWork et dans mon WebJob j'utilise Autofac pour injecter mes couches de dépendances, de services et de référentiels. J'ai quelques problèmes avec les données périmées lors de l'exécution de mon WebJob.Nouveau DBContext en continu Azure WebJob en cours d'exécution
Exemple: Je mets à jour un enregistrement sur mon site Web et mon WebJob est alors lancé mais mon WebJob ne peut pas voir ce changement dans la base de données. Il voit l'enregistrement avant le changement.
Pour résoudre ce problème, j'ai essayé d'injecter mon contexte personnalisé comme celui-ci:
builder.RegisterType<PCContext>().As<IPCContext>().InstancePerDependency();
Après avoir fait que je peux voir les nouveaux changements dans la base de données. Mais maintenant j'ai d'autres problèmes. Lorsque j'insère un nouvel enregistrement puis le lit, je ne peux pas voir ce nouvel enregistrement depuis mon WebJob. Cela a bien fonctionné avant d'injecter mon contexte (comme indiqué dans le code ci-dessus).
Si je crée un nouveau contexte dans ma fonction WebJob je peux lire les mises à jour de la base de données, mais je veux utiliser ma couche de service à la place comme ceci:
_services.UserExport.ExportUsers();
Je ne peux pas comprendre ce que je fais mal ici. Ce que je veux c'est que chaque fois que ma fonction WebJob est lancée, je veux créer un nouveau contexte. Je suis sûr d'avoir les dernières mises à jour de la base de données et je veux pouvoir l'insérer dans ma base de données. mon WebJob en utilisant ma couche de service.
Quelqu'un peut-il me diriger dans la bonne direction?
Notez que mon WebJob est continu, donc son code d'enregistrement Autofac est uniquement exécuté une fois lorsque le WebJob est démarré, pas à chaque fois qu'une fonction dans le WebJob est exécutée.
S'il vous plaît laissez-moi savoir si plus de description ou de code est nécessaire.
Merci.
Wow, je reçois le problème exact et observai quelques heures en arrière. J'aimerais aussi connaître la solution. –
Appelez-vous 'SaveShanges' sur votre DbContext? – Steven
Oui appelant 'SaveChanges' mais ne l'enregistrant pas dans la base de données. –