相关疑难解决方法(0)

c#在多线程服务器中使用Entity Framework

在多线程服务器中使用实体框架的最佳实践是什么?我正在使用实体框架ObjectContext来管理我的所有数据库操作,现在我知道这个上下文不是线程安全的,所以现在当我需要使用它来执行一些数据库操作时,我用lock声明来包围它是安全的.这是我应该怎么做的?

c# database multithreading entity-framework objectcontext

41
推荐指数
3
解决办法
4万
查看次数

DbContext已经处理完毕

我使用ASP.NET MVC 4和SQL Server 2008开发了一个Web应用程序,我创建了ContextManager类,在所有页面中只有一个数据库上下文.

public static class ContextManager
{
    public static HotelContext Current
    {
        get
        {
            var key = "Hotel_" + HttpContext.Current.GetHashCode().ToString("x")
                      + Thread.CurrentContext.ContextID.ToString();
            var context = HttpContext.Current.Items[key] as HotelContext;
            if (context == null)
            {
                context = new HotelContext();
                HttpContext.Current.Items[key] = context;
            }
            return context;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

它在大多数页面中都能正常工作,但是在注册页面出现问题并且我的上下文因以下错误而被废弃:

由于已经处理了DbContext,因此无法完成操作.

public ActionResult Register ( RegisterModel model )
{
    if ( ModelState.IsValid )
    {
        // Attempt to register the user
        try
        {
            WebSecurity.CreateUserAndAccount( model.UserName, model.Password,
                                              new
                                               {
                                                      Email = model.Email, …
Run Code Online (Sandbox Code Playgroud)

c# asp.net asp.net-mvc entity-framework dbcontext

7
推荐指数
2
解决办法
4万
查看次数