关于EntityFrameWork在实际应用过程中并发处理的问题

fqq_zhang 2011-05-19 03:53:48
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'
第四步:本函数执行修改操作,并提示并发错误
}
}
...全文
167 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
szjay 2011-07-04
  • 打赏
  • 举报
回复
用乐观锁
ycproc 2011-05-23
  • 打赏
  • 举报
回复
在里面自己写 构造函数

我觉得 高并发不是这个能解决的
沟通的管道和数据的处理能力才是关键问题
fqq_zhang 2011-05-23
  • 打赏
  • 举报
回复
沉底啦

13,189

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 分析与设计
社区管理员
  • 分析与设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧