C# Linq到SQL不';t保存名为'的属性;价值';
我正在插入一个C# Linq到SQL不';t保存名为'的属性;价值';,c#,linq-to-sql,insert,C#,Linq To Sql,Insert,我正在插入一个UserStat记录——据我所知,没有什么异常。基本思想是迭代一组值,Stats,并创建UserStat记录,复制一些Stat数据 然而,当我调试时,在任何userStat.Value=语句,.value的值仍然是0.0。如果这很重要的话,它是SQL Server数据库中的一个浮点数。但是,数据库中的.AnotherProperty和.SomeOtherProp字段也是浮动的——它们保存得非常好 我的一致性和可重复性问题是,.Value在被修改时永远不会持续(即使在本地实例中)。也
UserStat
记录——据我所知,没有什么异常。基本思想是迭代一组值,Stats
,并创建UserStat
记录,复制一些Stat
数据
然而,当我调试时,在任何userStat.Value=代码>语句,.value
的值仍然是0.0。如果这很重要的话,它是SQL Server数据库中的一个浮点数。但是,数据库中的.AnotherProperty
和.SomeOtherProp
字段也是浮动的——它们保存得非常好
我的一致性和可重复性问题是,.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();
}
使用(MyDataContext db=newmydatacontext())
{
List stats=新列表();
//创建统计数据
foreach(db.Stats中的var stat)
{
UserStat UserStat=new UserStat()
{
//设置一些公共属性
};
开关(stat.ID)
{
案例(int)Enums.Stats.Stat1:
userStat.Value=1;
//就在这里,userStat.Value==0是真的…嗯?
userStat.AnotherProperty=2;
userStat.SomeOtherProp=5;
打破
案例(int)Enums.Stats.Stat2:
userStat.Value=5;
//就在这里,userStat.Value==0是真的…嗯?
打破
违约:
打破
}
stats.Add(userStat);
}
db.UserStats.InsertAllOnSubmit(stats);
db.SubmitChanges();
}
更新
是的,这是我的错。对于OnValueChanged(),我在UserStat
上有一个部分类定义
这是我很久以前实现的一个业务修改,我记不起来了,因为它是该类上唯一的业务修改,而其他类中有许多是我不断调试的。Value
可能是一个关键字,会导致一些意外行为。将该列名更改为其他名称。Value
可能是一个关键字,导致您出现一些意外行为。将该列名更改为其他名称。Oops--我错过了在.OnValueChanged()定义中修改UserStat的部分类定义。Oops--我错过了在.OnValueChanged()定义中修改UserStat的部分类定义
定义。您是否在注释点直接测试了值==0
?或者你做出这样的假设是因为它不保存?@smartcaveman:“但是,当我调试时,…”我调试了一行后面的语句,它是0.0。你是否在注释点直接测试了值==0
?或者你做出这样的假设是因为它不能保存?@smartcaveman:“但是,当我调试时,…”我调试了这行后面的语句,它是0.0,我考虑过了,但是1)对UserStat
记录的修改在我的项目的其他地方是可以的,2)我使用Linq to SQL profiler进行了调试,它将.Value
列适当地包装在方括号中,例如插入[UserStat]SET[Value]=123…
。是否有您建议的特定行为导致了这种情况?让我澄清一下——对UserStat.Value
的修改与其他地方的预期一样有效。调试时,对象与它未来的数据库副本无关,它只是数据上下文中对象的公共属性,但是1)对UserStat
记录的修改在我的项目的其他地方是可以的,2)我使用Linq to SQL profiler进行了调试,它将.Value
列适当地包装在方括号中,例如插入[UserStat]SET[Value]=123…
。是否有您建议的特定行为导致了这种情况?让我澄清一下——对UserStat.Value
的修改与其他地方的预期一样有效。调试时,对象与它未来的数据库副本无关,它只是数据上下文中对象的公共属性。