62,046
社区成员
发帖
与我相关
我的任务
分享
//修改实体
public bool Update(Container model)
{
var mExist = dbContext.Container.SingleOrDefault(m=>m.TransportDocumentId==model.TransportDocumentId && m.ContainerNo==model.ContainerNo);
if (mExist != null)
{
if (mExist.Id != model.Id)
{
throw new Exception("相同集装箱号已经存在于本提单中.");
}
dbContext.Entry(mExist).State = EntityState.Detached;
}
//找到原来的集装箱
var mOld = dbContext.Container.SingleOrDefault(m => m.Id == model.Id);
string oldContainerNo = model.ContainerNo;
if (mOld != null)
{
oldContainerNo = mOld.ContainerNo;
dbContext.Entry(mOld).State = EntityState.Detached;
}
dbContext.Container.Attach(model);
var mGoods = model.TransportDocument.Goods;
if (model.ContainerNo != oldContainerNo)
{
//说明修改了集装箱号,必须同步货物
foreach (var g in mGoods)
{
var gn = g.GoodsContainerNo.Where(n => n.ContainerNo == oldContainerNo);
foreach (var gNo in gn)
{
gNo.ContainerNo = model.ContainerNo;
dbContext.Entry(gNo).State = EntityState.Modified;
}
}
} //Save时这一级不会被修改???
dbContext.Entry(model).State = EntityState.Modified;
return dbContext.SaveChanges() >= 0;
}