//TODO: Make this method a bit more clean public void SaveMachine(Guid machineKey, Guid projectKey, string fingerprint, string name, IDictionary<string, string> data, DateTime serverTime) { using (var context = GetDataContext()) { // var machine = context.Machines.SingleOrDefault(x => x.Fingerprint == fingerprint); // if (machine != null) // { // var needToSubmitChanges = false; // if (machine.Name != name) // { // machine.Name = name; // machine.LastUpdateDate = DateTime.UtcNow; // needToSubmitChanges = true; // } // //To improve performance ? // var machineDatas = machine.MachineDatas.ToArray(); // if (data != null) // { // //Add missing and update existing machineDatas // foreach (var d in data) // { // var match = machineDatas.SingleOrDefault(x => x.Name == d.Key); // if (match == null) // { // var newMachineData = new MachineData // { // Id = Guid.NewGuid(), // MachineId = machine.Id, // CreationDate = DateTime.UtcNow, // LastUpdateDate = DateTime.UtcNow, // Name = d.Key, // Value = d.Value // }; // context.MachineDatas.InsertOnSubmit(newMachineData); // needToSubmitChanges = true; // continue; // } // if (match.Value != d.Value) // { // match.Value = d.Value; // match.LastUpdateDate = DateTime.UtcNow; // needToSubmitChanges = true; // } // } // } // //Remove old machineDatas // foreach (var machineData in machineDatas) // { // var match = data.SingleOrDefault(x => x.Key == machineData.Name); // if (match.Equals(new KeyValuePair<string, string>())) // { // context.MachineDatas.DeleteOnSubmit(machineData); // needToSubmitChanges = true; // } // } // if (needToSubmitChanges) // context.SubmitChanges(); // return machine.Id; // } var newMachine = new Machine { MachineKey = machineKey, Fingerprint = fingerprint, Name = name, CreationServerTime = serverTime, ProjectId = context.Projects.Single(x => x.ProjectKey == projectKey).ProjectId, }; context.Machines.InsertOnSubmit(newMachine); context.SubmitChanges(); if (data != null) { foreach (var d in data) { var machineData = new MachineData { MachineId = newMachine.MachineId, Name = d.Key, Value = d.Value, CreationServerTime = serverTime, }; context.MachineDatas.InsertOnSubmit(machineData); } } context.SubmitChanges(); } }
partial void DeleteMachineData(MachineData instance);
partial void UpdateMachineData(MachineData instance);
partial void InsertMachineData(MachineData instance);
private void detach_MachineDatas(MachineData entity) { this.SendPropertyChanging(); entity.Machine = null; }
private void attach_MachineDatas(MachineData entity) { this.SendPropertyChanging(); entity.Machine = this; }