我张贴这种question昨天晚上,这使我发现了一个巨大的问题!Linq-to-Sql SubmitChanges不更新字段...为什么?
我在我的数据库名为单位小数列,只要我列的值设置为一个非零和的SubmitChanges用新值的列更新。如果我尝试将列的值设置为零,则SubmitChanges不会更新列。
data.Units = this.ReadProperty<decimal>(UnitsProperty);
data.UnitPrice = this.ReadProperty<decimal>(UnitPriceProperty);
data.Price = this.ReadProperty<decimal>(PriceProperty);
我已经采取了看看DataContext的日志,我可以看到,与零值的字段不包含在查询中。即使我试图对Linq忽略它的改变进行硬编码。
data.Units = 0;
data.UnitPrice = 0;
data.Price = 0;
不用说这是杀了我!任何想法为什么发生这种情况
解决方案
我想通了,我的问题与SO社会的帮助。我的问题是由于创建我的实体进行连接时造成的,因此列的默认值设置为零,因此当它尝试将值分配给零时... LinqToSql说嘿...没有任何更改,所以我没有更新价值。
我现在正在做什么...这只是为了工作如下:
ctx.DataContext.InvoiceItems.Attach(data, true);
这似乎迫使所有的值写入自己的数据库。这现在工作。
得到了你的类的任何部分方法,如OnCreated()或OnChanged()造成干扰?你有三重肠道检查你的模型吗? – 2008-12-22 13:08:28
@Dave愚蠢的问题......但你说三重肠检查是什么意思? – mattruma 2008-12-22 13:12:16