我正在插入一个 UserStat
记录——据我所知没有异常。基本思想是迭代一组值,Stats
, 并创建 UserStat
记录复制一些 Stat
数据。
但是,当我调试时,立即在任何 userStat.Value = <some number>;
之后语句,.Value
的值仍然是 0.0。如果重要的话,它是 SQL Server 数据库中的一个 float 。 但是,.AnotherProperty
和 .SomeOtherProp
数据库中的字段也是 float ——它们完美地保存。
我一致且可重现的问题是 .Value
修改时永远不会持续存在(即使在本地实例中)。也许这需要一双新的眼睛——我是否漏掉了一些显而易见的东西?
using (MyDataContext db = new MyDataContext())
{
List<UserStat> stats = new List<UserStat>();
// create stats
foreach (var stat in db.Stats)
{
UserStat userStat = new UserStat()
{
// set some common properties
};
switch (stat.ID)
{
case (int)Enums.Stats.Stat1:
userStat.Value = 1;
// right here, userStat.Value == 0 is true...HUH?
userStat.AnotherProperty = 2;
userStat.SomeOtherProp = 5;
break;
case (int)Enums.Stats.Stat2:
userStat.Value = 5;
// right here, userStat.Value == 0 is true...HUH?
break;
default:
break;
}
stats.Add(userStat);
}
db.UserStats.InsertAllOnSubmit(stats);
db.SubmitChanges();
}
更新
是的,这是我的错。我在 UserStat
上有一个部分类定义对于 OnValueChanged()
那是我很久以前实现的业务修改,我记不清了,因为这是该类上唯一的业务修改,而其他人有很多我一直在调试。
最佳答案
Value
可能是关键字并导致您出现一些意外行为。将该列名称更改为其他名称。
关于c# - Linq to SQL 不保存名为 'Value' 的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5546224/