欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

当我需要的数据使用的是同一个数据库表时

程序员文章站 2022-03-01 19:49:45
...

当我需要的数据使用的是同一个数据库表时

当我们遇见同一个模态框,或者是页面,出现了2个不同的表单,但是需要用到的却是同一个数据库的表时,现在的我们该如何处理
如简单的:
当我需要的数据使用的是同一个数据库表时
其中的出库仓库和入库仓库,其实实质上都是仓库,并且都是使用的数据库的仓库表
那是因为再查询这2条数据的时候使用的一点小手段,才能使其查询出的2条数据的结果并不相同
打开修改的模态框并回填:

//打开详情模态框
function openDetailModal(allotID) {
    //重置表单
    $("#formInsetAllot").resetForm();
    //回填数据
    $.post("DetailAllot", { AllotID: allotID }, function (stuData) {
        loadDatatoForm("formInsetAllot", stuData);
    });
    //打开模态框
    $("#modalDetailAllot").modal("show");
}

在页面的代码和普通的回填一样
使用post请求数据将控制器查询到的数据返回给页面

然而一般的linq查询,一张表一般只用一次,然而,因为需要得使用同一张表二次
才能一次查询出2个仓库,并且然其返回的仓库名称不一样
当我需要的数据使用的是同一个数据库表时
当我需要的数据使用的是同一个数据库表时
出库和入库都需要用到仓库ID
所以在控制器中代码linq查询中,需要用到仓库表2次

try
{
    AllotVo AllotInfo = (from tbAllot in myModels.PW_Allot
          join tbUser in myModels.PW_User on tbAllot.UserID equals tbUser.UserID
join tbUserType in myModels.PW_UserType on tbUser.UserTypeID equals tbUserType.UserTypeID
join tbCommodity in myModels.PW_Commodity on tbAllot.CommodityID equals tbCommodity.CommodityID
join tbOWarehouse in myModels.PW_OWarehouse on tbAllot.OWarehouseID equals tbOWarehouse.OWarehouseID
          join tbSWarehouse in myModels.PW_SWarehouse on tbAllot.SWarehouseID equals tbSWarehouse.SWarehouseID
          join tbWarehouse1 in myModels.PW_Warehouse on tbOWarehouse.WarehouseID equals tbWarehouse1.WarehouseID
          join tbWarehouse2 in myModels.PW_Warehouse on tbSWarehouse.WarehouseID equals tbWarehouse2.WarehouseID
          where tbAllot.AllotID == AllotID
          select new AllotVo
          {
                AllotID = tbAllot.AllotID,
                UserID = tbUser.UserID,
                UserTypeID=tbUserType.UserTypeID,
                CommodityID  =tbCommodity.CommodityID,
                OWarehouseID = tbOWarehouse.OWarehouseID,
                SWarehouseID = tbSWarehouse.SWarehouseID,
                UserName = tbUser.UserName.Trim() + "  " + "(" + tbUserType.UserTypeName + ")",
                OWarehouseName = tbWarehouse1.WarehouseName,
                SWarehouseName = tbWarehouse2.WarehouseName,
                AllotNum = tbAllot.AllotNum,
                AllotDate = tbAllot.AllotDate,
               CommodityName = tbCommodity.CommodityName,
               CommodityNumber = tbCommodity.CommodityNumber,
               Unit = tbCommodity.Unit,
               Specification = tbCommodity.Specification,
                AllotQuantity = tbAllot.AllotQuantity,
                 AllotRemark = tbAllot.AllotRemark
  	 }).Single();
     if (AllotInfo.UserTypeID == 1)
     {
           AllotInfo.UserName = "管理员";
     }
     return Json(AllotInfo, JsonRequestBehavior.AllowGet);
}
catch (Exception e)
{
       Console.WriteLine(e);
       return Json("error", JsonRequestBehavior.AllowGet);
}

其中我使用了2次WarehouseID,这样就可以避免程序出错了

但仍如果拥有完美的数据库那么就不会出现这种情况,所以说,数据库的设计是整个程序的制作中最为关键的一步

所以在接下的时间,得好好的学习如何设计出相对完美的数据库

当然我的这种方法不是唯一可以解决这个问题的,也许有跟更加优秀的写法值得我们去学习