コード例 #1
0
 public void TearDown()
 {
     using (var context = new MessageLogDbContext(_dbName)) {
         if (context.Database.Exists())
         {
             context.Database.Delete();
         }
     }
 }
コード例 #2
0
 public void Dispose()
 {
     using (var context = new MessageLogDbContext(dbName)) {
         if (context.Database.Exists())
         {
             context.Database.Delete();
         }
     }
 }
コード例 #3
0
        public given_a_sql_log_with_three_events()
        {
            using (var context = new MessageLogDbContext(dbName))
            {
                if (context.Database.Exists())
                {
                    context.Database.Delete();
                }

                context.Database.Create();
            }

            this.eventA = new EventA();
            this.eventB = new EventB();
            this.eventC = new EventC();

            var metadata = Mock.Of <IMetadataProvider>(x =>
                                                       x.GetMetadata(eventA) == new Dictionary <string, string>
            {
                { StandardMetadata.SourceId, eventA.SourceId.ToString() },
                { StandardMetadata.SourceType, "SourceA" },
                { StandardMetadata.Kind, StandardMetadata.EventKind },
                { StandardMetadata.AssemblyName, "A" },
                { StandardMetadata.Namespace, "Namespace" },
                { StandardMetadata.FullName, "Namespace.EventA" },
                { StandardMetadata.TypeName, "EventA" },
            } &&
                                                       x.GetMetadata(eventB) == new Dictionary <string, string>
            {
                { StandardMetadata.SourceId, eventB.SourceId.ToString() },
                { StandardMetadata.SourceType, "SourceB" },
                { StandardMetadata.Kind, StandardMetadata.EventKind },
                { StandardMetadata.AssemblyName, "B" },
                { StandardMetadata.Namespace, "Namespace" },
                { StandardMetadata.FullName, "Namespace.EventB" },
                { StandardMetadata.TypeName, "EventB" },
            } &&
                                                       x.GetMetadata(eventC) == new Dictionary <string, string>
            {
                { StandardMetadata.SourceId, eventC.SourceId.ToString() },
                { StandardMetadata.SourceType, "SourceC" },
                { StandardMetadata.Kind, StandardMetadata.EventKind },
                { StandardMetadata.AssemblyName, "B" },
                { StandardMetadata.Namespace, "AnotherNamespace" },
                { StandardMetadata.FullName, "AnotherNamespace.EventC" },
                { StandardMetadata.TypeName, "EventC" },
            });

            this.metadata = Mock.Get(metadata);
            this.sut      = new SqlMessageLog(dbName, new JsonTextSerializer(), metadata);
            this.sut.Save(eventA);
            this.sut.Save(eventB);
            this.sut.Save(eventC);
        }
コード例 #4
0
 public void Dispose()
 {
     if (context != null)
     {
         context.Dispose();
         context = null;
         GC.SuppressFinalize(this);
     }
     if (commands != null)
     {
         try { commands.Dispose(); }catch (ObjectDisposedException) { }
     }
 }
コード例 #5
0
 public void Dispose()
 {
     if (context != null)
     {
         context.Dispose();
         context = null;
         GC.SuppressFinalize(this);
     }
     if (events != null)
     {
         events.Dispose();
     }
 }
コード例 #6
0
        public void Setup()
        {
            using (var context = new MessageLogDbContext(_dbName)) {
                if (context.Database.Exists())
                {
                    context.Database.Delete();
                }

                context.Database.Create();
            }

            _eventA = new EventA();
            _eventB = new EventB();
            _eventC = new EventC();

            var metadata = Mock.Of <IMetadataProvider>(x =>
                                                       x.GetMetadata(_eventA) == new Dictionary <string, string> {
                { StandardMetadata.SourceId, _eventA.SourceId.ToString() },
                { StandardMetadata.SourceType, "SourceA" },
                { StandardMetadata.Kind, StandardMetadata.EventKind },
                { StandardMetadata.AssemblyName, "A" },
                { StandardMetadata.Namespace, "Namespace" },
                { StandardMetadata.FullName, "Namespace.EventA" },
                { StandardMetadata.TypeName, "EventA" }
            } &&
                                                       x.GetMetadata(_eventB) == new Dictionary <string, string> {
                { StandardMetadata.SourceId, _eventA.SourceId.ToString() },
                { StandardMetadata.SourceType, "SourceB" },
                { StandardMetadata.Kind, StandardMetadata.EventKind },
                { StandardMetadata.AssemblyName, "B" },
                { StandardMetadata.Namespace, "Namespace" },
                { StandardMetadata.FullName, "Namespace.EventB" },
                { StandardMetadata.TypeName, "EventB" }
            } &&
                                                       x.GetMetadata(_eventC) == new Dictionary <string, string> {
                { StandardMetadata.SourceId, _eventA.SourceId.ToString() },
                { StandardMetadata.SourceType, "SourceC" },
                { StandardMetadata.Kind, StandardMetadata.EventKind },
                { StandardMetadata.AssemblyName, "B" },
                { StandardMetadata.Namespace, "AnotherNamespace" },
                { StandardMetadata.FullName, "AnotherNamespace.EventC" },
                { StandardMetadata.TypeName, "EventC" }
            });

            this._metadata = Mock.Get(metadata);

            this._messageLog = new SqlMessageLog(_dbName, new JsonTextSerializer(), metadata);
            this._messageLog.Save(_eventA);
            this._messageLog.Save(_eventB);
            this._messageLog.Save(_eventC);
        }
コード例 #7
0
                public bool MoveNext()
                {
                    if (context == null)
                    {
                        context = new MessageLogDbContext(sqlQuery.nameOrConnectionString);
                        var queryable = context.Set <MessageLogEntity>().AsQueryable()
                                        .Where(x => x.Kind == StandardMetadata.CommandKind);

                        var where = sqlQuery.criteria.ToExpression();
                        if (where != null)
                        {
                            queryable = queryable.Where(where);
                        }

                        commands = queryable
                                   .AsEnumerable()
                                   .Select(x => this.sqlQuery.serializer.Deserialize <ICommand>(x.Payload))
                                   .GetEnumerator();
                    }

                    return(commands.MoveNext());
                }
コード例 #8
0
        public void Save(ICommand command)
        {
            using (var context = new MessageLogDbContext())
            {
                var metadata = this.metadataProvider.GetMetadata(command);

                context.Set <MessageLogEntity>().Add(new MessageLogEntity
                {
                    Id           = Guid.NewGuid(),
                    SourceId     = command.Id.ToString(),
                    Kind         = metadata.TryGetValue(StandardMetadata.Kind),
                    AssemblyName = metadata.TryGetValue(StandardMetadata.AssemblyName),
                    FullName     = metadata.TryGetValue(StandardMetadata.FullName),
                    Namespace    = metadata.TryGetValue(StandardMetadata.Namespace),
                    TypeName     = metadata.TryGetValue(StandardMetadata.TypeName),
                    SourceType   = metadata.TryGetValue(StandardMetadata.SourceType) as string,
                    CreationDate = DateTime.UtcNow.ToString("o"),
                    Payload      = serializer.Serialize <string>(command),
                });
                context.SaveChanges();
            }
        }