标签:
public int UpData(T model, params string[] proNames)
{
//4.1将 对象 添加到 EF中
DbEntityEntry entry = db.Entry(model);
var set = db.Set().Find(DbContextExtensions.GetEntityKey(db, model));
if (set != null)
{
entry.State = EntityState.Detached; //这个是在同一个上下文能修改的关键
}
//4.2先设置 对象的包装 状态为 Unchanged
entry.State = EntityState.Unchanged;
//4.3循环 被修改的属性名 数组
foreach (string proName in proNames)
{
//4.4将每个 被修改的属性的状态 设置为已修改状态;后面生成update语句时,就只为已修改的属性 更新
entry.Property(proName).IsModified = true;
}
//4.4一次性 生成sql语句到数据库执行
return db.SaveChanges();
}
public static class DbContextExtensions
{
public static int GetEntityKey(this DbContext context, object entity)
{
var adapter = context as IObjectContextAdapter;
var entry = adapter.ObjectContext.ObjectStateManager.GetObjectStateEntry(entity);
string id= entry.EntityKey.EntityKeyValues[0].Value.ToString();
return int.Parse(id);
}
}
标签: