コード例 #1
0
 public static void Start()
 {
     ReadModelRegistration.Register();
     TableReadmodelInterface.CheckForTables();
     EventStoreInterface.StartConnection();
     EventStoreInterface.ReadSavedEvents();
 }
コード例 #2
0
        public static void Publish(EventFromES anEvent)
        {
            dynamic readmodelData;
            string  nspace = "ES_SQL_DDD_CQRS.src.ReadModels";
            var     q      = from t in Assembly.GetExecutingAssembly().GetTypes()
                             where t.IsClass && t.Namespace == nspace
                             select t;

            foreach (var readModel in q)
            {
                string[] hksd = readModel.Name.ToString().Split("Data");
                if (hksd.Length == 1)
                {
                    try
                    {
                        MethodInfo theMethod  = typeof(ReadModels.ReadModel).GetMethod("EventPublish", new[] { typeof(EventFromES) });
                        string     methodName = readModel.Name.ToString();
                        string     nameSpace  = readModel.Namespace.ToString();
                        string     key        = methodName.Split("Read")[0];
                        if (Book.book.ContainsKey(key))
                        {
                            string fullClassName     = nameSpace + "." + methodName;
                            object readModelToInvoke = Activator.CreateInstance(Type.GetType(fullClassName));
                            readmodelData = theMethod.Invoke(readModelToInvoke, new EventFromES[] { anEvent });
                        }
                        else
                        {
                            Book.book.Add(key, new List <ReadModelData>());
                            string fullClassName     = nameSpace + "." + methodName;
                            object readModelToInvoke = Activator.CreateInstance(Type.GetType(fullClassName));
                            readmodelData = theMethod.Invoke(readModelToInvoke, new EventFromES[] { anEvent });
                        }
                        TableReadmodelInterface.UpdateTable(readmodelData, key);
                    }
                    catch (Exception e)
                    {
                        Console.Write(e);
                    }
                }
            }
        }
コード例 #3
0
ファイル: OnStart.cs プロジェクト: Morkaleb/CQRS-ES-With-SQL
 public static void Start()
 {
     ReadSaved.SavedEventReader();
     TableReadmodelInterface.CheckForTables();
 }
コード例 #4
0
        public static void Publish(EventFromES anEvent)
        {
            try
            {
                DateTime LastPublishedTime =
                    Connection.Book.From("EventLog", new { Id = 1 }).ToObject <EventLog>().Execute().LastEvent;
                DateTime eventTime = Convert.ToDateTime(anEvent.TimeStamp);
                int      timeing   = DateTime.Compare(eventTime, LastPublishedTime);
                dynamic  readmodelData;
                //if(false)
                if (timeing != -1)
                //if(true)
                {
                    string nspace = typeof(EventDistributor).Namespace.Split('.')[0] + ".Readmodels";
                    var    q      = from t in Assembly.GetExecutingAssembly().GetTypes()
                                    where t.IsClass && t.Namespace == nspace
                                    select t;
                    foreach (var readModel in q)
                    {
                        string[] rMName  = readModel.Name.ToString().Split("Data");
                        string[] rMName2 = readModel.Name.ToString().Split("Read");
                        if (rMName.Length == 1 && rMName2.Length > 1)
                        {
                            try
                            {
                                MethodInfo theMethod  = typeof(ReadModel).GetMethod("EventPublish", new[] { typeof(EventFromES), typeof(List <dynamic>) });
                                string     methodName = readModel.Name.ToString();
                                string     nameSpace  = readModel.Namespace.ToString();
                                string     key        = methodName.Split("Read")[0];

                                string         fullClassName     = nameSpace + "." + methodName;
                                object         readModelToInvoke = Activator.CreateInstance(Type.GetType(fullClassName));
                                List <dynamic> book = new List <dynamic>();
                                readmodelData = theMethod.Invoke(readModelToInvoke, new object[] { anEvent, book });
                                if (readmodelData != null)
                                {
                                    TableReadmodelInterface.UpdateTable(readmodelData, key);
                                }
                            }
                            catch (Exception e)
                            {
                                Console.Write(e);
                            }
                        }
                    }
                    EventLog log = Connection.Book.From("EventLog", new { Id = 1 }).ToObject <EventLog>().Execute();
                    if (anEvent.TimeStamp != null)
                    {
                        log.EventCount++;
                        log.LastEventRan = anEvent.StreamId;
                        log.LastEvent    = Convert.ToDateTime(anEvent.TimeStamp);
                        try
                        {
                            Connection.Book.Upsert("EventLog", new
                                                   { log.EventCount, log.LastEventRan, log.LastEvent, Id = log.Id }).Execute();
                        }
                        catch (Exception e)
                        {
                            string msg = e.Message;
                        }
                    }
                }
                else
                {
                    string help;
                }
            }
            catch (Exception e)
            {
                string message = e.Message;
            }
        }