如何使用EF搜索和更新记录

时间:2014-10-09 23:52:37

标签: entity-framework

我正在尝试在字段/属性中查找包含文本字符串的记录,然后用新文本字符串替换文本字符串,然后保存更新记录。

我不确定下面的代码是不行的。我已经设置了断点,名称变量确实有替换文本但是当我查看数据库中的记录时,该字段仍然具有原始值。

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();

1 个答案:

答案 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();