2015-08-20 1 views
1

Je tente de créer une Saga avec SagaData qui contient un type complexe.Ajout de type complexe à des données Saga

Par exemple:

public class MySagaData : IContainSagaData 
{ 
    public virtual Guid Id { get; set; } 
    public virtual string Originator { get; set; } 
    public virtual string OriginalMessageId { get; set; } 
    public ComplexType MyComplexType { get; set; } 
} 

Est-ce possible? Si oui, comment cartographiez-vous cela et est-ce un anti-pattern? Je n'ai trouvé aucune ressource en ligne qui parle de faire cela, ce qui me porte à croire qu'il y a quelque chose qui me manque.

+0

Quel est le problème? Si vous utilisez la persistance de NHibernate (que je peux suspecter à partir de vos propriétés "virtuelles"), cela fonctionnera aussi, mais ce MyComlexType doit aussi être virtuel. NHibernate est plutôt intelligent à ce sujet. Si vous utilisez la persistance RavenDb, c'est encore mieux, il n'y a pratiquement aucune limite sur vos données Saga et pas besoin de posséder des propriétés virtuelles. Si vous utilisez Azure Storage, vous ne pouvez pas utiliser de types complexes. –

Répondre

3

Ceci est possible et mon équipe le fait souvent. Cela dépend un peu de votre configuration de persistance.

Si vous utilisez RavenDB, cela devrait fonctionner. Nous prenons cela encore plus loin et aurons un List (Of ComplexType) et RavenDB stocke cela sans problème. Si vous faites NHibernate, vous devrez peut-être effectuer un mappage supplémentaire pour que cela fonctionne car NHibernate lui-même comporte des restrictions/conventions sur la façon dont les objets sont sérialisés et enregistrés (je ne connais pas NHibernate comme nous utilisons toujours RavenDB pour notre persistance saga.)