【发布时间】:2011-03-10 20:23:00
【问题描述】:
简而言之,一张表中的一条特定记录会更新,而同一张表中的多项其他修改则不会。
theStat 在.SubmitChanges() 上更新OK
statToIncrease 实例不更新SubmitChanges()
在观看.GetChangeSet() 时,只进行了一次更新。为什么statToIncrease 的任何实例在修改后没有更新?我是否必须为每次更新打开一个新的DataDataContext?
UserStat 表 has a primary key。
可能是另一个问题
用.Add(double amountToAdd) 之类的方法扩展我的UserStat 类是否明智?必须打开另一个连接,但它可以让我继续使用 LINQ-only,对吗?
using (DataDataContext db = new DataDataContext())
{
Random r = new Random();
var theStat = db.UserStats.FirstOrDefault();
// tried scoping `statToIncrease` outside of the for loop
// didn't fix anything
UserStat statToIncrease = null;
for (int i = 0; i < vm.stats.Count(); i++)
{
statToIncrease = db.UserStats.Where(s => s.ID == i)
.FirstOrDefault();
// here, .Property is type float
statToIncrease.Property += r.NextDouble();
// here, .Property is type int
theStat.Property -= 1;
}
// create and insert another object
// this object is inserted correctly
// right here, .ChangeSet() only has one insert and one update
// the update is only for `theStat` and not
// any modifications to `statToIncrease`
db.SubmitChanges();
}
更新
我发现这样做很丑:
db.ExecuteCommand("UPDATE [UserStat] SET [Value] = {0} WHERE [ID] = {1},
statToIncrease.Value + amount, statToIncrease.ID");
【问题讨论】:
标签: .net linq-to-sql datacontext