【发布时间】:2019-02-18 23:59:47
【问题描述】:
我有下表:
我有几个数组,如果数据匹配,我将在其中滚动以减少其数量:
//DISMINUYE CANTIDAD DE CASILLER
public void disminuyeCasiller(string[] codParte, string [] rolls, double[] cantResta)
{
int size = codParte.Length;
for(int i = 0; i < size; i++)
{
string parte = codParte[i];
string rol = rolls[i];
double valorRes = cantResta[i];
using(var ctx=new ModelContext())
{
Casiller updateRollo = ctx.Casillers.Where(x => x.cod_parte == parte && x.rollo == rol).First();
double newValue = updateRollo.cantidad - valorRes;
updateRollo.cantidad = newValue;
ctx.SaveChanges();
}
}
}
根据这段代码的作用,首先要知道排列的大小(所有数组都将具有相同的大小),创建一个for 并获取rollo 和cod_parte 的数量匹配,在这种情况下300 将减去到达cantResta 的金额,例如100.50,一旦在原来的位置分配减法,保存更改并在必要时重复,直到一切都完成很好。
我正在传递这些数据:
codparte[]=new array{"11155"};
rollos[]=new array{"RT0102"};
cantRest[]=new array{100.50};
//Size and data can be different -only a example
在cantidad 的末尾和rollo RT0102 在表中我应该保持这样:199.50,问题是更新两条记录,它看起来像这样:
为什么在未选择此行时还要更新RT0103?我在句子中做错了什么? (将来可能会成为问题,因为许多rollos具有相同的信息)
屏幕截图断点
【问题讨论】:
-
"我正在传递这些数据..." 你确定吗?参数的数据类型与参数的数据类型不匹配,为数组。
-
@JohnWu 我假设数据在每个数组中传递,我将编辑问题
-
您是否定义了主键,并在 EF 中将其标记为这样?
-
@JohnWu 只有
cod_parte是主键
标签: c# entity-framework linq