private void Initialisieren(Domänenevent e) { DataRow r; switch (e.Name) { case "NeuerKontakt": var i = int.Parse(e.Payload["RowIndex"]); r = _tb.Rows.Add(new object[_tb.Columns.Count]); foreach (var p in e.Payload) if (_tb.Columns.Contains(p.Key)) r[p.Key] = p.Value; r["Id"] = e.Entitätsid; break; case "KontaktVerändert": r = _tb.Rows.Cast<object>().Cast<DataRow>() .First(_ => _["Id", DataRowVersion.Original].ToString() == e.Entitätsid); foreach (var p in e.Payload) r[p.Key] = p.Value; break; case "KontaktGelöscht": r = _tb.Rows.Cast<object>().Cast<DataRow>() .First(_ => _["Id", DataRowVersion.Original].ToString() == e.Entitätsid); r.Delete(); break; } _tb.AcceptChanges(); }
public IEnumerable<Domänenevent> Ausführen(IEnumerable<Domänenkommando> kommandos) { return kommandos.Select((cmd, i) => { var e = new Domänenevent(); switch (cmd.Name) { case "KontaktAnlegen": e.Name = "NeuerKontakt"; e.Entitätsid = Guid.NewGuid().ToString(); e.Payload = cmd.Payload; e.Payload.Add("RowIndex", i.ToString()); break; case "KontaktAktualisieren": e.Name = "KontaktVerändert"; e.Entitätsid = cmd.Entitätsid; e.Payload = cmd.Payload; break; case "KontaktLöschen": e.Name = "KontaktGelöscht"; e.Entitätsid = cmd.Entitätsid; break; } return e; }); }
public static Domänenevent Parse(string eventText) { var sr = new StringReader(eventText); var e = new Domänenevent { Name = sr.ReadLine(), Laufende_Nummer = int.Parse(sr.ReadLine()), Entitätsid = sr.ReadLine() }; do { var l = sr.ReadLine(); if (string.IsNullOrEmpty(l)) break; var kv = l.Split('\t'); e.Payload.Add(kv[0], kv[1]); } while (true); return e; }
public void Nachführen(Domänenevent e) { DataRow r; switch (e.Name) { case "NeuerKontakt": var i = int.Parse(e.Payload["RowIndex"]); r = _tb.Rows[int.Parse(e.Payload["RowIndex"])]; r["Id"] = e.Entitätsid; r.AcceptChanges(); break; case "KontaktVerändert": case "KontaktGelöscht": r = _tb.Rows.Cast<object>().Cast<DataRow>() .First(_ => _["Id", DataRowVersion.Original].ToString() == e.Entitätsid); r.AcceptChanges(); break; } }