用Linq更新整个对象还是我必须绑定每个属性?

时间:2014-04-16 09:40:41

标签: c# .net linq

我目前有这种方法更新我的大学对象,然后保存更改。

public static int Update(Models.University uni)
{
    using (var ctx = new ApplicationDbContext())
    {
        var x = (from y in ctx.Universities
                 where y.Id == uni.Id
                 select y).FirstOrDefault();
        x.PrincipleName = uni.PrincipleName;
        return ctx.SaveChanges();
    }
}

有没有办法保存整个对象而不是设置每个属性?

例如类似的东西(我试过这个,但更新失败了):

public static int Update(Models.University uni)
{
    using (var ctx = new ApplicationDbContext())
    {
        var x = (from y in ctx.Universities
                 where y.Id == uni.Id
                 select y).FirstOrDefault();
        x = uni;
        return ctx.SaveChanges();
    }
}

1 个答案:

答案 0 :(得分:2)

如果uni也是一个实体,那么您只需将其附加到上下文

即可
ctx.Universities.Attach(uni);
// set the state of the entity to modified so changes are saved
ctx.Entry(uni).State = EntityState.Modified;
ctx.SaveChanges();