Inheritance: INotifyPropertyChanging, INotifyPropertyChanged
示例#1
0
        //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();
            }
        }
示例#2
0
 partial void DeleteMachineData(MachineData instance);
示例#3
0
 partial void UpdateMachineData(MachineData instance);
示例#4
0
 partial void InsertMachineData(MachineData instance);
示例#5
0
		private void detach_MachineDatas(MachineData entity)
		{
			this.SendPropertyChanging();
			entity.Machine = null;
		}
示例#6
0
		private void attach_MachineDatas(MachineData entity)
		{
			this.SendPropertyChanging();
			entity.Machine = this;
		}