使用WEB API实现EntityFramework,更新所有属性

Tim*_*thy 12 c# linq entity-framework-4 asp.net-web-api2

我正在使用EF和WEB API.我有一个PUT方法,它更新已经在db中的实体.现在我有这个:

        // PUT api/fleet/5
        public void Put(Fleet fleet)
        {
            Fleet dbFleet = db.Fleets.Find(fleet.FleetId);
            dbFleet.Name = fleet.Name;
            dbFleet.xy= fleet.xy;
            //and so on....
            db.SaveChanges();
        }
Run Code Online (Sandbox Code Playgroud)

但我很懒,只想写下这样的东西:

dbFleet.update(fleet);
Run Code Online (Sandbox Code Playgroud)

所以我不必自己更新每个房产.

我确信有一种方法,但我只能找到关于如何使用MVC做到这一点的答案,但不能在使用WEB API而不是接收模型状态时找到答案.

谢谢

dar*_*yal 20

db.Fleets.Attach(fleet);
db.Entry(fleet).State = EntityState.Modified;
db.SaveChanges();
Run Code Online (Sandbox Code Playgroud)


Tim*_*thy 9

刚刚找到答案......

// PUT api/fleet/5
public void Put(Fleet fleet)
{
    db.Entry(fleet).State = EntityState.Modified;
    db.SaveChanges();
}
Run Code Online (Sandbox Code Playgroud)

我唯一不满意的是它不会更新子对象.Fleet有FleetAttributes,没有像这样更新.但我想我可以轻松循环它们......

编辑这对我有用:

// PUT api/fleet/5
public void Put(Fleet fleet)
{
    db.Entry(fleet).State = EntityState.Modified;
    foreach (var item in fleet.FleetAttributes)
    {
        db.Entry(item).State = EntityState.Modified;
    }
    db.SaveChanges();
}
Run Code Online (Sandbox Code Playgroud)