使用实体框架更新整个记录

时间:2017-11-07 13:31:57

标签: c# entity-framework entity-framework-5 ef-database-first

我这里有一个工作代码。

using (var db = new MyContextDB())
{
    var result = db.Books.SingleOrDefault(b => b.BookNumber == bookNumber);
    if (result != null)
    {
        result.MyColumnName= "Some new value";
        db.SaveChanges();
    }
}

但我有很多属性要改变。所以我正在尝试像

这样的东西
            result= newResult;
            db.SaveChanges();

但这不起作用。有没有想过用新的记录替换记录?

2 个答案:

答案 0 :(得分:0)

我认为,你不能这么容易地做到这一点。

您应该在Book类中创建一个方法,您可以在其中更改所有属性。

result.Update(Book newProperties);
db.SaveChanges();

result.Update(string prop1, int prop2, etc.);
db.SaveChanges();

答案 1 :(得分:0)

我建议使用Automapper。您可以像这样使用它:

var result = db.Books.SingleOrDefault(b => b.BookNumber == bookNumber);
if (result != null)
{
    Mapper.Map(newResult, result);
    db.SaveChanges();
}

请注意,您可能需要正确配置Automapper(例如,在更新时忽略Id属性)