当我需要的数据使用的是同一个数据库表时
程序员文章站
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,这样就可以避免程序出错了
但仍如果拥有完美的数据库那么就不会出现这种情况,所以说,数据库的设计是整个程序的制作中最为关键的一步
所以在接下的时间,得好好的学习如何设计出相对完美的数据库
当然我的这种方法不是唯一可以解决这个问题的,也许有跟更加优秀的写法值得我们去学习