2009-10-06 7 views
0

Dans mon contexte, j'ai Navision impliqué, mais peut-être cela est lié à chaque scénario d'interopérabilité COM, je ne sais pas.Comment faire passer une transaction de Navision à un composant C# enregistré pour COM interop?

Quoi qu'il en soit, la situation: - J'ai un composant simple C# enregistré pour COM Interop - je l'appelle de Navision, juste avant d'insérer un nouveau record (pour qui sait Navision, à l'intérieur d'un déclencheur « OnInsert », ainsi dans le contexte d'une transaction)

Je m'attendais à avoir une transaction ambiante, mais System.Transactions.Transaction.Current est null.

Ai-je raté quelque chose? Y a-t-il des techniques particulières que je devrais adopter pour que la transaction soit transférée dans mon composant interop?

Répondre

0

Etes-vous en train d'essayer de lancer une transaction dans NAV et ensuite accéder à cette transaction en utilisant votre objet COM?

Il semble que la valeur System.Transactions.Transaction.Current est null car vous n'avez pas initialisé une transaction dans votre objet COM - pouvez-vous envoyer un échantillon de code? Bien que, d'après votre message, il semble que vous attendiez la transaction. La valeur actuelle fait référence à la transaction que vous avez initiée dans NAV et je ne pense pas que ce soit ce qui va se passer, ou est même possible!

Quel est votre objet COM essayant de faire avec la transaction? Peut-être y a-t-il une approche différente que nous pourrions adopter? bien

+0

, il est pas moi qui commence la transaction. Mais je sais avec certitude que le déclencheur Navision OnInsert s'exécute dans un contexte transactionnel. L'implémentation du composant que j'exécute dans le plugin Navision est à moi: c'est un composant .Net construit pour fonctionner dans COM-Interop, et donc utilisable par le contexte Navision, c'est COM. Maintenant, d'après ce que je sais sur les transactions COM, MS DTC et .Net, je pensais que la transaction pourrait passer de Navision à mon composant .Net: mais cela n'arrive pas. – MatteoSp

+0

Je ne pense pas que la Transaction puisse passer de NAV à votre composant ... Je pense que ça va directement de NAV à SQL mais je peux me tromper. Qu'est-ce que votre composant essaie exactement de faire? Il peut y avoir une meilleure solution que d'essayer de détourner la transaction. –

Questions connexes