Exemplo n.º 1
0
        public Artikel LadeArtikelMitKategorien(int artikelNummer)
        {
            // Todo:
            // Try to load a previous version from another store (i.e. db)
            // if we have one, only get new events starting from the version of the entity from the other store
            // var article = _dbContext.Articles.Find(artikelNummer)...

            var events = _store.Get(artikelNummer);             // , article?.Version ?? 0

            if (!events.Any())
            {
                return(null);
            }

            // if we already got the entity from the other store, do not create via factory...
            // var article = article ?? _factory.CreateEntity<Artikel>(artikelNummer);
            var article = _factory.CreateEntity <Artikel>(artikelNummer);

            foreach (var evt in events)
            {
                article.ApplyEvent(evt);
            }

            _logger?.LogInformation("Artikel {ArtikelNummer} wurde geladen: {ArtikelBezeichnung}", artikelNummer, article.Bezeichnung);

            article.EventRaised += (s, e) => { _store.Store(e.Event); };

            return(article.ArtikelNummer > 0 ? article : null);
        }