EF框架使用sql语句查询

不论查询单条还是多条都需要加上ToList()

public ResultDto<Manage_LedgerDto> GetPageList(Manage_LedgerRequest queryBase, Expression<Func<Manage_LedgerDto, bool>> exp)
        {
            using (var db = new WarehouseContext())
            {
                //获取数量
                var Number = queryBase.Number;
                var Number1 =(int) Number / 3;
                var Number2 = Number - Number1;
                //获取输入的仓库ID 
                var StoreID = queryBase.SID;
                //查询抽检的数据
                var query1 = db.Database.SqlQuery<Manage_LedgerDto>("select top (@number) * from Manage_Ledger where  IsKey=1 and StoreID=@ID order by newid()", new SqlParameter("@number", Number1),new SqlParameter("@ID", StoreID)).ToList();
                var query2 = db.Database.SqlQuery<Manage_LedgerDto>("select top (@number) * from Manage_Ledger where  IsKey=0 and StoreID=@ID order by newid()", new SqlParameter("@number", Number2),new SqlParameter("@ID", StoreID)).ToList();
                
                //插入到子表中
                Bills_SpotCheckChildDto bills_SpotCheckChildDto1 = new Bills_SpotCheckChildDto();
                //插入到主表中
                Bills_CheckDto bills_CheckDto1 = new Bills_CheckDto();
                foreach (Manage_LedgerDto manage_LedgerDto1 in query1)
                {
                    bills_SpotCheckChildDto1.LocationID = manage_LedgerDto1.LocationID;
                    bills_SpotCheckChildDto1.State = 1;//是关键设备
                    bills_SpotCheckChildDto1.CheckBillsCode = bills_CheckDto1.CheckCode=CJ.GenerateBillsNo();//标识

                    bills_CheckDto1.CreateTime = DateTime.Now;
                    bills_CheckDto1.LastTime = DateTime.Now;
                    bills_CheckDto1.UserID = HttpContext.Current.User.Identity.Name;
                    bills_CheckDto1.SID = manage_LedgerDto1.StoreID;
                    bills_CheckDto1.State = 0;
                    bills_CheckDto1.Type = 1;//抽检
                    Bills_SpotCheckChildService.Add(bills_SpotCheckChildDto1);
                    BillsCheckService.Add(bills_CheckDto1);
                }
                Bills_SpotCheckChildDto bills_SpotCheckChildDto2 = new Bills_SpotCheckChildDto();
                Bills_CheckDto bills_CheckDto2 = new Bills_CheckDto();
                foreach (Manage_LedgerDto manage_LedgerDto2 in query2)
                {
                    bills_SpotCheckChildDto2.LocationID = manage_LedgerDto2.LocationID;
                    bills_SpotCheckChildDto2.State = 0;//不是是关键设备
                    bills_SpotCheckChildDto2.CheckBillsCode = bills_CheckDto2.CheckCode = CJ.GenerateBillsNo();//标识

                    bills_CheckDto2.CreateTime = DateTime.Now;
                    bills_CheckDto2.UserID = HttpContext.Current.User.Identity.Name;
                    bills_CheckDto2.SID = manage_LedgerDto2.StoreID;
                    bills_CheckDto2.State = 0;
                    bills_CheckDto2.Type = 1;//抽检
                    Bills_SpotCheckChildService.Add(bills_SpotCheckChildDto2);
                    BillsCheckService.Add(bills_CheckDto2);
                }

                var query = db.Database.SqlQuery<Manage_LedgerDto>("select * from Bills_Check where Type=1").ToList();
                var query_count = query.Count();
                var query_list = query.Skip(queryBase.Start).Take(queryBase.Length).ToList();
                var dto = new ResultDto<Manage_LedgerDto>
                {
                    recordsTotal = query_count,
                    data = query_list
                };
                return dto;
            }
        }

  

posted @ 2019-12-04 14:39  一只java小菜鸡  阅读(1342)  评论(0编辑  收藏  举报