我正在尝试在字段/属性中查找包含文本字符串的记录,然后用新文本字符串替换文本字符串,然后保存更新记录。
我不确定下面的代码是不行的。我已经设置了断点,名称变量确实有替换文本但是当我查看数据库中的记录时,该字段仍然具有原始值。
var vendors = db.Vendor.Where(c=> c.Name.Contains("Corp."));
foreach( var vendor in vendors)
{
var name = vendor.Name.Replace("Corp.", "Corporation");
vendor.Name = name;
}
db.SaveChanges();
更新 我现在最终使用这个黑客。
var vendors = db.Vendor.Where(c=> c.Name.Contains("Corp."));
foreach( var vendor in vendors)
{
var v = db.Vendor.Find(vendor.ID);
var name = vendor.Name.Replace("Corp.", "Corporation");
v.Name = name;
}
db.SaveChanges();
答案 0 :(得分:1)
我认为您忘记将您的实体状态标记为已修改,请尝试以下代码
var vendors = db.Vendor.Where(c=> c.Name.Contains("Corp."));
foreach(var vendor in vendors)
{
var name = vendor.Name.Replace("Corp.", "Corporation");
vendor.Name = name;
db.Entry(vendor).State = EntityState.Modified;
}
db.SaveChanges();