Exemplo n.º 1
0
        /// <summary>直接透過EF方式逐筆新增資料 </summary>
        /// <param name="XMLData"></param>
        /// <param name="InsertTotalCnt"></param>
        private static void OldInsert(string XMLData, int InsertTotalCnt)
        {
            XmlSerializer serializer = new XmlSerializer(typeof(bookstory));

            using (StringReader rdr = new StringReader(XMLData))
            {
                //將XML資料做反序列化
                bookstory resultingMessage = (bookstory)serializer.Deserialize(rdr);

                List <book_story> booksList = resultingMessage.books.Select(s => new book_story
                {
                    Amount     = s.Amount.ToString(),
                    BookId     = s.BookId,
                    BookName   = s.BookName,
                    CreateDate = Convert.ToDateTime(s.CreateDate)
                }).ToList();


                try
                {
                    Console.WriteLine(string.Format("原有方法(新增資料)-開始時間{0}!", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff")));
                    using (SampledataEntities db = new SampledataEntities())
                    {
                        //逐一比對物件裡面是否有相同資料,沒有則新增,有則更新
                        Action <book_story> RYH = (s) =>
                        {
                            if (db.book_story.Any(a => a.BookId == s.BookId))
                            {
                                var book_storyCollect = db.book_story.Where(f => f.BookId == s.BookId).ToList();
                                book_storyCollect.ForEach(a =>
                                {
                                    a.BookName = s.BookName;
                                    a.Amount   = s.Amount;
                                });
                            }
                            else
                            {
                                db.book_story.Add(s);
                            }
                        };
                        booksList.ForEach(RYH);
                        db.SaveChanges();
                        Console.WriteLine(string.Format("原有方法(新增資料)-完成時間{0}!", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff")));
                    }
                }
                catch (System.Data.Entity.Validation.DbEntityValidationException ex)
                {
                    throw;
                }
            };
        }
Exemplo n.º 2
0
        /// <summary> 透過SP大量新增資料</summary>
        /// <param name="XMLData">接收API回來XML資料</param>
        private static void UsingXMLtoSp(string XMLData)
        {
            int InsertTotalCnt;

            Console.WriteLine(string.Format("XML_to_sp開始時間:{0}", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff")));
            try
            {
                using (SampledataEntities db = new SampledataEntities())
                {
                    //直接將XML放入SP中處理
                    ObjectResult <SP_Storybook_Result> CallInsertSp = db.SP_Storybook(XMLData);
                    InsertTotalCnt = CallInsertSp.FirstOrDefault().cnt.Value;
                }
            }
            catch (Exception ex)
            {
                throw ex.GetBaseException();
            }

            Console.WriteLine(string.Format("XML_to_sp完成時間{0},共新增{1}筆資料!", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"), InsertTotalCnt));
        }