首页 新闻 会员 周边 捐助

关于EF4在实际应用中的并发问题

1
悬赏园豆:50 [已关闭问题] 关闭于 2011-08-15 20:10

1.User实体类
public class User
{
  [Key, Column("UserID", Order = 0, TypeName = "varchar"), StringLength(10), Required]
  public string UserID { get; set; }
  [ConcurrencyCheck, Column("UserName", Order = 1, TypeName = "varchar"), StringLength(50), Required]
  public string UserName { get; set; }
}
2.DbContext类
public class UserContext : DbContext
{
  public UserContext() : base("name=BlogDB") { }
  public IDbSet<User> Users { get; set; }
}
3.UserBLL类(为方便,我将数据访问和业务放在一起)
public class UserBLL
{
  public User GetUserById(string UserID)
  {
  using (db=new UserContext())
  {
  return db.Users.Find(UserID);
  }
  }
   
  public void UpdateUser(User user)
  {
  我们知道,EntityFramework本身的并发机制是完善的,但这是建立在同一个DBContext下
  //webform中通过GetUserById获取到User实例,对UserName进行了修改,
  //之后将修改之后的User通过该函数传递过来,但该user实例已经不是之前的实例了
  //此处可以理解成是一个全新的实例,那么若更新的话,如何保证并发?
  比如说:
  第一步:webform获取了UserID='01' UserName='sa'的User实例数据
  第二部:后来将UserName改成了"as"
  第三部:webform修改了UserName='sasa'
  第四步:本函数执行修改操作,并提示并发错误
  }
}

小强斯基的主页 小强斯基 | 初学一级 | 园豆:150
提问于:2011-05-20 09:19
< >
分享
所有回答(1)
0

使用时间戳

wangcong | 园豆:205 (菜鸟二级) | 2012-02-26 14:59
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册