Linq-to-Sql SubmitChanges没有更新字段......为什么?

mat*_*uma 6 .net c# linq linq-to-sql

我昨天晚上发布了这个问题,这让我发现了一个很大的问题!

我的数据库中有一个名为Units的十进制列,只要我将列的值设置为NON ZERO,并使用新值SubmitChanges列更新.如果我尝试将列的值设置为ZERO,则SubmitChanges不会更新列.

data.Units = this.ReadProperty<decimal>(UnitsProperty);
data.UnitPrice = this.ReadProperty<decimal>(UnitPriceProperty);
data.Price = this.ReadProperty<decimal>(PriceProperty);
Run Code Online (Sandbox Code Playgroud)

我查看了DataContext日志,我可以看到查询中不包含具有ZERO值的字段.即使我试图对代码进行硬编码,Linq也会忽略它.

data.Units = 0;
data.UnitPrice = 0;
data.Price = 0;
Run Code Online (Sandbox Code Playgroud)

不用说这是杀了我!任何想法为什么会这样?

我在SO社区的帮助下想出了我的问题.我的问题是由于我创建我的实体附加时的事实,列的默认值设置为零,所以当它试图将值分配给零时... LinqToSql说嘿......没有改变,所以我没有更新价值.

我现在在做什么......只是为了让它发挥作用如下:

ctx.DataContext.InvoiceItems.Attach(data, true);
Run Code Online (Sandbox Code Playgroud)

这似乎迫使所有值将自己写入数据库.这适用于现在.

mat*_*uma 2

我在 SO 社区的帮助下解决了我的问题。我的问题是由于以下事实引起的:当我创建要附加的实体时,该列的默认值设置为零,因此当它尝试将值分配为零时...LinqToSql 说嘿...没有任何改变,所以我不会更新该值。

我现在正在做的......只是为了让它发挥作用如下:

ctx.DataContext.InvoiceItems.Attach(data, true);
Run Code Online (Sandbox Code Playgroud)

这似乎迫使所有值将自身写入数据库。目前这有效。