public ReturnDeviceRequest Select(string id, bool all = false)
 {
     using (var db = new BillingDbContext())
     {
         if (all)
         {
             var sql1 = from o in db.ServiceRequests.OfType <ReturnDeviceRequest>()
                        .Include(o => o.RequestInfo)
                        .Include(o => o.Routings)
                        .Where(o => o.Id == id && o.State != EServiceRequestState.DELETED)
                        select o;
             var req = sql1.SingleOrDefault();
             if (req != null && req.Routings.Count > 0)
             {
                 foreach (var ri in req.Routings)
                 {
                     ReturnDeviceRoutingInfo ri1 = ri;
                     var sql2 = from r in db.RoutingInfos.OfType <ReturnDeviceRoutingInfo>()
                                .Include(r => r.OldContract).Include(r => r.UpdContract)
                                .Include(r => r.Routings).Where(r => r.No == ri1.No)
                                select r;
                     ri1 = sql2.SingleOrDefault();
                 }
             }
             return(req);
         }
         var sql = from o in db.ServiceRequests.OfType <ReturnDeviceRequest>()
                   .Include(o => o.RequestInfo)
                   .Where(o => o.Id == id && o.State != EServiceRequestState.DELETED)
                   select o;
         return(sql.SingleOrDefault());
     }
 }
        public List <ReturnDeviceRoutingInfo> ToRoutingInfos(IEnumerable <ReturnDeviceRoutingInfoDTO> list)
        {
            var vos = new List <ReturnDeviceRoutingInfo>();

            foreach (var vo in list)
            {
                var o = new ReturnDeviceRoutingInfo();
                ClassCopier.Instance.Copy(vo, o);

                if (vo.Routings.Count > 0)
                {
                    o.Routings = ToRoutings(vo.Routings);
                }
                if (vo.OldContract != null)
                {
                    o.OldContract = ToOldContract(vo.OldContract);
                }
                if (vo.UpdContract != null)
                {
                    o.UpdContract = ToUpdatedContract(vo.UpdContract);
                }

                vos.Add(o);
            }
            return(vos);
        }