Beispiel #1
0
        /// <summary>
        /// Profits 테이블에 1년 8760시간 데이터로 초기화
        /// </summary>
        /// <param name="parentId">부모 키 값</param>
        public void InitialProfitsByParentId(int parentId, int quantity)
        {
            // 기존 ParentId에 해당하는 모든 레코드 삭제
            _context.Profits.Where(p => p.ParentId == parentId).ToList().ForEach(p => _context.Profits.Remove(p));
            _context.SaveChanges();

            // 매출의 Order를 1부터 8760까지 순서대로 List<T>로 가져오기
            var sales = _saleProvider.GetSales(parentId).OrderBy(s => s.Order).ToList();
            var costs = _costProvider.GetCosts(parentId).OrderBy(c => c.Order).ToList();

            // 특정 ParentId에 해당하는 8760개 Order 생성
            var profits = new List <ProfitModel>();

            for (int i = 1; i <= 8760; i++)
            {
                var sale   = sales[i - 1].Sale;
                var cost   = costs[i - 1].Cost;
                var profit = (sale - cost) * quantity;
                profits.Add(new ProfitModel {
                    ParentId = parentId, Order = i, Sale = sale, Cost = cost, Quantity = quantity, Profit = profit
                });
            }

            _context.AddRange(profits.OrderBy(p => p.Order));
            _context.SaveChanges(); // 하나 Add() 후 SaveChanges() 요청하면 순서대로 입력되지만, 성능 느려짐
        }
Beispiel #2
0
 public virtual async Task AddAll(IEnumerable <T> Items)
 {
     context.AddRange(Items);
     await context.SaveChangesAsync();
 }