Exemple #1
0
        public void Save_Point_Measure_Fact_Service(IList <RawDataDTO> list_raw_data_dto, ElementDTO element)
        {
            try
            {
                DatawarehouseConnectionContext datawarehousecontext = new DatawarehouseConnectionContext();
                Point_Measure_Fact             point_measure_fact;

                foreach (RawDataDTO raw_dto in list_raw_data_dto)
                {
                    point_measure_fact = new Point_Measure_Fact();

                    try
                    {
                        point_measure_fact.ID = 1;

                        point_measure_fact.Client_ID = 0;
                        point_measure_fact.DataRecordingFrequency = element.Recorded_Freq;
                        point_measure_fact.Date_ID             = System.DateTime.Now.Date;
                        point_measure_fact.External_ID         = raw_dto.ID.ToString();
                        point_measure_fact.Hour_ID             = System.DateTime.Now.Date;
                        point_measure_fact.Last_Update_Time    = System.DateTime.Now;
                        point_measure_fact.Max_Value           = element.Max_Value;
                        point_measure_fact.Min_Value           = element.Min_Value;
                        point_measure_fact.Point_ID            = element.ID;
                        point_measure_fact.Schedule_ID         = 0;
                        point_measure_fact.Timestamp_From      = Convert.ToDateTime(raw_dto.TIMESTAMP);
                        point_measure_fact.Timestamp_To        = Convert.ToDateTime(raw_dto.TIMESTAMP);
                        point_measure_fact.Unit_Of_Measurement = element.Unit.Unit_Name;
                        point_measure_fact.Value = Convert.ToDouble(raw_dto.VALUE);

                        datawarehousecontext.Point_Measure_Fact_Entities.Add(point_measure_fact);
                    }
                    catch (Exception ex)
                    {
                        throw ex;
                    }
                }

                datawarehousecontext.SaveChanges();
            }
            catch (Exception ex)
            {
                throw ex;
            }



            //datawarehousecontext.Point_Measure_Fact_Entities.Add()
        }
Exemple #2
0
        /// <summary>
        /// Datawarehouse finalinsert into the Point_Mesaure_Fact
        /// </summary>
        /// <param name="point_measure_facts"></param>
        private static void FinalInsert(IList <Point_Measure_Fact> point_measure_facts)
        {
            try
            {
                BlockingCollection <Point_Measure_Fact> entityQueue = new BlockingCollection <Point_Measure_Fact>();
                List <Task> writers = new List <Task>();
                if (point_measure_facts.Count > 0)
                {
                    Action writerAction = new Action(() =>
                    {
                        DatawarehouseConnectionContext ctx = new DatawarehouseConnectionContext();

                        ctx.Database.CommandTimeout = 300;
                        int totalAdded = 0;
                        try
                        {
                            while (true)
                            {
                                Point_Measure_Fact my = entityQueue.Take();
                                my.Last_Update_Time   = System.DateTime.Now;
                                ctx.Point_Measure_Fact_Entities.Add(my);
                                totalAdded++;
                                if (totalAdded > 500)
                                {
                                    //Console.WriteLine("Saving changes, TID: " + Thread.CurrentThread.ManagedThreadId);
                                    try
                                    {
                                        ctx.SaveChanges();
                                    }
                                    catch (Exception ex)
                                    {
                                        Helper.WriteToFile("Error in saving: " + ex.InnerException.Message);
                                    }

                                    ctx.Database.Connection.Close();
                                    ctx = new DatawarehouseConnectionContext();
                                }
                            }
                        }
                        catch (InvalidOperationException inv)
                        {
                            //WriteToFile("Saving final changes --- " + inv.Message);
                            //Console.WriteLine("Saving final changes, TID: " + Thread.CurrentThread.ManagedThreadId);
                            //  Console.WriteLine("Error Saving final " + inv.Message);
                            ctx.SaveChanges(); // Save any pending changes
                            ctx.Database.Connection.Close();
                            totalAdded = 0;
                        }
                    });


                    for (int i = 0; i < 1000; i++)
                    {
                        writers.Add(Task.Factory.StartNew(writerAction));
                    }

                    foreach (Point_Measure_Fact point_measure_fact in point_measure_facts)
                    {
                        entityQueue.Add(point_measure_fact);
                    }
                }

                entityQueue.CompleteAdding();
                //Console.WriteLine("Done generating data.");

                Task.WaitAll(writers.ToArray());
                Console.WriteLine("Finished");
            }
            catch (Exception ex)
            {
                string innerexp = (ex.InnerException != null) ? ex.InnerException.Message : "";
                Helper.WriteToFile("Error in the FinalInsert " + ex.Message + "--" + innerexp);
                Console.Write("Done with errors Press any key");
                Console.ReadKey();
            }
        }