1
当我尝试使用ApplyCurrentValues方法将十进制(19,4)不可空字段更新为零(0)时,该字段不会更新并保留其旧值。除零之外的任何值都会更新。而其他带有空属性的小数字段也可以设置为零。实体框架4 ApplyCurrentValues不会更新不可空的十进制列为零
使用的代码如下:
public Int32 saveEntity(tblEntity entity)
{
using (conn)
{
Container _context = new Container();
if (entity.ID != 0)
{
var stub = new tblEntity() { ID = entity.ID };
_context.tblEntitySet.Attach(stub);
_context.tblEntitySet.ApplyCurrentValues(entity);
}
else
{
_context.tblEntitySet.AddObject(entity);
}
_context.SaveChanges();
return entity.ID;
}
}
实体始终有一个名为ID(主键)的列,上面的代码按预期方式工作,但只有不可空的十进制列不会更新为零。 – serkanz 2012-02-16 14:50:04
不可为空的double或float是否创建相同的行为? – 2012-02-16 16:08:19
我没有尝试它的双重或浮动类型。顺便说一句,当我使用 而不是: var stub = new tblEntity(){ID = entity.ID}; _context.tblEntitySet.Attach(stub); 当我使用: _context.tblEntitySet.Attach(_context.tblEntitySet.Single(s => s.ID == entity.ID)); 一切按预期工作。顺便说一下,我在使用.Net Framework 3.5应用程序使用的WCF服务中使用EF4。所以我们可以说它是作为“断开”模式工作的。 – serkanz 2012-02-16 19:28:12