J'utilise Raven persister et je veux sagas à mettre en œuvre IFindSagas
, je dois trouver la saga basée sur 2 propriétés, SiteId
& EmailAddress
donc ConfigureMapping
ne fonctionnera pas. L'interface ISagaPersister
vous permet uniquement de rechercher une seule saga par une seule propriété.IFindSagas avec la persistance de la saga Raven et plusieurs propriétés dans NServiceBus
J'ai mis en place un chercheur de la saga comme celui-ci
public class MySagaFinder : IFindSagas<MySagaData>.Using<ISomeMessage>
{
public ISagaPersister Persister { get; set; }
public MySagaData FindBy(ISomeMessage message)
{
var lookup = string.Format("{0}__{1}", message.SiteId, message.EmailAddress);
return Persister.Get<MySagaData>("SagaLookup", lookup);
}
}
Donc, fondamentalement, j'ai ajouté une propriété sur MySagaData
appelé SagaLookup
qui est une concaténation de SiteId
et EmailAddress
. Je peux ensuite regarder par là. Cela ressemble à un hack. Y a-t-il un moyen d'utiliser la saga persister pour récupérer une saga par plusieurs propriétés ou récupérer une liste de sagas en fonction d'une propriété que je peux ensuite filtrer par l'autre propriété?
Habituellement, c'est un signe qu'un concept de domaine est manquant. Qu'est-ce qui dans votre domaine est identifié par le siteId et un e-mail? –
Une invitation de site utilisateur, il a été suggéré que je pourrais générer un identifiant unique pour chacun d'eux, mais je n'ai pas vraiment besoin de l'ID pour autre chose et essayait d'éviter plus de données –
Je me suis rendu compte que je suis bête à ce sujet, je générais un code de validation d'une chaîne aléatoire et l'envoyais par email. Je vais maintenant utiliser un guid, l'utiliser comme identifiant de la saga et simplifier le tout, merci! –