TPurchase tPur = dao.GetPurchase(id); //取入库单组合实体
PurchaseContent content = tPur.Content; //取入库单主内容实体
if (content.AuditFlag == true) //如果入库单已审核
{
throw new Exception("该单据已经审核" + content.PurchaseBillCode);
}
foreach (TPurchaseDetail tPurDetail in tPur.Detail) //遍历入库单货品
{
TPurchaseDetail tPruDetail = new TPurchaseDetail();
Store storeParam = new Store();
storeParam.Warehouse = tPur.Content.WareHouse;
storeParam.ProductCode = tPurDetail.DetDetail.ProductCode;
Store sto = null;
//根据仓库、货品代码取库存表中该货品信息
sto = daoStore.GetStore(storeParam);
if (sto == null)//库存中没有该货品
{
sto = new Store(); //创建库存表实例
sto.Warehouse = tPur.Content.WareHouse;
sto.ProductCode = tPurDetail.DetDetail.ProductCode;
sto.Quantity = tPurDetail.DetDetail.Quantity;
sto.Price = tPurDetail.DetDetail.Price;
sto.Amount = sto.Quantity * sto.Price;
daoStore.InsertInfo(sto); //将该货品信息插入到库存表
sto.Memo = "";
}
else //库存中有该货品
{
sto.Quantity += tPurDetail.DetDetail.Quantity; //累加货品数量
//累加计算货品金额
sto.Amount += tPurDetail.DetDetail.Quantity * tPurDetail.DetDetail.Price;
if (sto.Quantity >0)
sto.Price = sto.Amount / sto.Quantity; //根据金额、数量计算单价
daoStore.UpdateInfo(sto); //更新库存表
}
}
content.AuditFlag = isAudit; //入库审核标志
content.Operator = operatorCode;
content.OperateDate = DateTime.Now;
dao.UpdateInfo(content); //更新入库单的审核标志
ts.Complete(); //提交事务程序运行到此次出, //根据仓库、货品代码取库存表中该货品信息
显示:没有为当前数据上下文实例启用对象跟踪说明:本人是初级学习C#数据库,这几年一直在用心学习C#数据库编程,也买了不少书,以前在2.0 的环境还能奏户看下一个小系统,对于3.5的版本系统,真是感觉有点头大的感觉。是莱鸟,虚心向各位大侠学习。最近急得真想去蹲到大学门前,向那些学生请教。希望能帮助我的朋友和老师帮助我一把!真诚求助!问题描述不清,我可以把希望发给你们,我是买了实战突击Asp.net项目开发案例整合的一本书的里面最后一个系统,因为里面的案例跟我正在学习开发有关,所以恳请各位指教!
PurchaseContent content = tPur.Content; //取入库单主内容实体
if (content.AuditFlag == true) //如果入库单已审核
{
throw new Exception("该单据已经审核" + content.PurchaseBillCode);
}
foreach (TPurchaseDetail tPurDetail in tPur.Detail) //遍历入库单货品
{
TPurchaseDetail tPruDetail = new TPurchaseDetail();
Store storeParam = new Store();
storeParam.Warehouse = tPur.Content.WareHouse;
storeParam.ProductCode = tPurDetail.DetDetail.ProductCode;
Store sto = null;
//根据仓库、货品代码取库存表中该货品信息
sto = daoStore.GetStore(storeParam);
if (sto == null)//库存中没有该货品
{
sto = new Store(); //创建库存表实例
sto.Warehouse = tPur.Content.WareHouse;
sto.ProductCode = tPurDetail.DetDetail.ProductCode;
sto.Quantity = tPurDetail.DetDetail.Quantity;
sto.Price = tPurDetail.DetDetail.Price;
sto.Amount = sto.Quantity * sto.Price;
daoStore.InsertInfo(sto); //将该货品信息插入到库存表
sto.Memo = "";
}
else //库存中有该货品
{
sto.Quantity += tPurDetail.DetDetail.Quantity; //累加货品数量
//累加计算货品金额
sto.Amount += tPurDetail.DetDetail.Quantity * tPurDetail.DetDetail.Price;
if (sto.Quantity >0)
sto.Price = sto.Amount / sto.Quantity; //根据金额、数量计算单价
daoStore.UpdateInfo(sto); //更新库存表
}
}
content.AuditFlag = isAudit; //入库审核标志
content.Operator = operatorCode;
content.OperateDate = DateTime.Now;
dao.UpdateInfo(content); //更新入库单的审核标志
ts.Complete(); //提交事务程序运行到此次出, //根据仓库、货品代码取库存表中该货品信息
显示:没有为当前数据上下文实例启用对象跟踪说明:本人是初级学习C#数据库,这几年一直在用心学习C#数据库编程,也买了不少书,以前在2.0 的环境还能奏户看下一个小系统,对于3.5的版本系统,真是感觉有点头大的感觉。是莱鸟,虚心向各位大侠学习。最近急得真想去蹲到大学门前,向那些学生请教。希望能帮助我的朋友和老师帮助我一把!真诚求助!问题描述不清,我可以把希望发给你们,我是买了实战突击Asp.net项目开发案例整合的一本书的里面最后一个系统,因为里面的案例跟我正在学习开发有关,所以恳请各位指教!
//根据仓库、货品代码取库存表中该货品信息
sto = daoStore.GetStore(storeParam);
1.daoStore从哪来? 如果有声明。 把代码贴全2.GetStore这个方法里的操作也贴上代码!!3.storeParam 你这个参数传的是个model。 如果获取某条数据.参数设置为标识 岂不是更好。
Store storeParam = new Store();
storeParam.Warehouse = tPur.Content.WareHouse;
storeParam.ProductCode = tPurDetail.DetDetail.ProductCode;
Store sto = daoStore.GetStore(storeParam);
//根据仓库、货品代码取库存表中该货品信息这种操作还是最好一次性解决。你这个storeParam model实例。你也只给两个字段赋了值。 TPurchaseDetail tPruDetail = new TPurchaseDetail();
Store sto = daoStore.GetStore(tPur.Content.WareHouse,tPurDetail.DetDetail.ProductCode);
//根据仓库、货品代码取库存表中该货品信息
namespace MRErp.ServiceProvider.Dao
{
internal class StoreDao
{
private static MRErpDataContext dc; public StoreDao()
{
if (dc == null)
{
dc = new MRErpDataContext(ConnectionManager.ConnectionString);
}
}
/// <summary>
/// 根据仓库,商品代码获得库存实体
/// </summary>
/// <param name="obj">只需传入仓库代码,商品代码即可</param>
/// <returns>库存实体</returns>
public Store GetStore(Store obj)
{
return dc.Store.FirstOrDefault(itm => itm.Warehouse == obj.Warehouse && itm.ProductCode == obj.ProductCode);
}3.storeParam 你这个参数传的是个model。 如果获取某条数据.参数设置为标识 岂不是更好。
这个参数我还真是不清楚,如果可以的话,我把源码发给你,帮我看看吧,谢谢!
/// 入库确认
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnAudit_Click(object sender, EventArgs e)
{
int cnt = 0;
foreach (GridViewRow row in dgvInfo.Rows) //遍历GridView所有的行
{
bool chk = ((CheckBox)row.Cells[1].FindControl("chkAuditFlag")).Checked;
if (chk) //判断该行是行被选中
{
cnt++;
//取GridView行主键值
string tempId = dgvInfo.DataKeys[row.RowIndex].Value.ToString();
string billCode = row.Cells[2].Text; //取GridView行单据号内容
if (!string.IsNullOrEmpty(tempId))
{
try
{
//调用业务层入库单审核方法
PurchaseService.Instance.AuditPurchase(Convert.ToInt32(tempId), true, Context.User.Identity.Name);
((CheckBox)row.Cells[1].FindControl("chkAuditFlag")).Checked = false;
}
catch
{
throw new Exception("单据号" + billCode + "审核失败");
}
}
}
}
调用 PurchaseService.cs 中
/// <summary>
/// 入库单审核确认
/// </summary>
/// <param name="id"></param>
/// <param name="isAudit"></param>
/// <param name="operatorCode"></param>
/// <returns></returns>
public bool AuditPurchase(int id, bool isAudit, string operatorCode)
{.......
Store storeParam = new Store();
storeParam.Warehouse = tPur.Content.WareHouse;
storeParam.ProductCode = tPurDetail.DetDetail.ProductCode;
Store sto = null;
//根据仓库、货品代码取库存表中该货品信息
sto = daoStore.GetStore(storeParam); 在这里我该为 Store sto = daoStore.GetStore(storeParam); if (sto == null)//库存中没有该货品
{.......调用 StoreDao.cs 中的
/// <summary>
/// 根据仓库,商品代码获得库存实体
/// </summary>
/// <param name="obj">只需传入仓库代码,商品代码即可</param>
/// <returns>库存实体</returns>
public Store GetStore(Store obj)
{
return dc.Store.FirstOrDefault(itm => itm.Warehouse == obj.Warehouse && itm.ProductCode == obj.ProductCode);
}报错为:从查询中返回了结果后,将无法修改数据上下文选项。这个怎么解决??????????谢谢,麻烦了!