您的位置:首页 > 其它

关于EntityFramework4.x/5.0只更新某部分字段的问题

2012-08-30 16:28 369 查看
因为4.x/5.0的context都采用了继承DbContext,但DbContext不提供修改字段状态的相关操作方法,可是实现了IObjectContextAdapter接口,我们可以从这里拿到ObjectContext,这样一切都好办了.我们可以如下操作

public int Update(E entity, string[] propertys)
{
int changeCount = 0;
using(TransactionScope transaction = new TransactionScope (TransactionScopeOption.Required))
{
using (YzOASysEntities context = new YzOASysEntities())
{
context.Set<E>().Attach(entity);

IObjectContextAdapter objectContextAdatper = context;
ObjectContext objectContext = objectContextAdatper.ObjectContext;
ObjectStateEntry ose = objectContext.ObjectStateManager.GetObjectStateEntry(entity);
foreach (string property in propertys)
{
ose.SetModifiedProperty(property);
}

if (context.Entry<E>(entity).State == EntityState.Unchanged)
context.Entry<E>(entity).State = EntityState.Modified;
changeCount = context.SaveChanges();
if (changeCount > 0)
transaction.Complete();
}
}
return changeCount;

}


其实设不设置State是Modified都没问题.因为上面已经把状态给同步了.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: