【发布时间】:2015-07-22 16:17:15
【问题描述】:
我有一个数据库表,我正在尝试使用货币数据类型(十进制)更新一个单元格,并且我正在使用 LINQ 和实体框架。
很遗憾,Context.SaveChanges(); 由于某种原因无法正常工作。
这是表结构
Type Amount Machine
Cash 1000 Tablet
这是我的代码:
using (var GC = new GroundCommanderEntities())
{
PAYMENT_Repo PAYMENTREPO = new PAYMENT_Repo();
var ExistingCashPayment = GC.PAYMENT_Repo
.Where(Filter => Filter.Type == "Cash" && Filter.Machine == "Tablet").ToList();
string type = "";
var amt = 0.00m;
foreach (var item in ExistingCashPayment)
{
type = item.Type;
amt = item.Amount;
}
if (type == cbPaymentType.Text) //a combobox that contains Types
{
PAYMENTREPO.Amount = amt + Convert.ToDecimal(txtTendering.Text);
GC.SaveChanges();
return true;
}
else
{
return false;
}
}
【问题讨论】:
-
你收到错误了吗?
-
@MickyDuncan 不,它没有。当我调试时,进入
GC.SaveChanges();并查看表格,它没有应用更改。 -
您知道在您的
foreach中您一直在重写amt和type的旧值吗?是这个问题吗(在任何人之前我都知道字符串是不可变的) -
@JamieRees 我有一个 foreach 循环,因为我在列表中有 ExistingCashPayment。如果表为空,我无法通过 if 语句。它正在寻找其中包含 Cash 类型的现有行。你有什么建议?
-
我的意思是你在循环中每次都覆盖
amt和type的值。你真的应该把amt和type收藏起来。
标签: c# linq entity-framework