Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 访问MVC 5中已有的数据上下文_C#_Asp.net_Asp.net Mvc_Asp.net Mvc 5 - Fatal编程技术网

C# 访问MVC 5中已有的数据上下文

C# 访问MVC 5中已有的数据上下文,c#,asp.net,asp.net-mvc,asp.net-mvc-5,C#,Asp.net,Asp.net Mvc,Asp.net Mvc 5,所以,我对MVC和ASP.NET这两个东西还很陌生 我在VS2013中创建了一个新的MVC应用程序,现在正在定制它。 目前我正在编写管理员区域,此时我可以修改用户属性 整个admin部分绑定到一个adminController。在这个控制器中,我创建了一个新的UserContext来访问用户数据库。 但是,由于应用程序已经在AccountController中定义了用户上下文,因此不需要这样做 在我的AdminController中访问UserContext的最佳实践是什么 /编辑:在一篇评论中

所以,我对MVC和ASP.NET这两个东西还很陌生

我在VS2013中创建了一个新的MVC应用程序,现在正在定制它。 目前我正在编写管理员区域,此时我可以修改用户属性

整个admin部分绑定到一个adminController。在这个控制器中,我创建了一个新的UserContext来访问用户数据库。 但是,由于应用程序已经在AccountController中定义了用户上下文,因此不需要这样做

在我的AdminController中访问UserContext的最佳实践是什么

/编辑:在一篇评论中,我对其进行了更详细的解释:


数据上下文和与数据库的连接已存在。这不是问题所在。我的问题是,我有一个帐户控制器来管理登录、注册等。当页面加载时,这个控制器被实例化。对于该实例,我还有一个UserManager类的实例。在我的管理控制器中,我希望使用UserManager类的那个实例,而不是像目前这样创建一个新实例。希望这能更好地解释它

/edit2:根据请求,输入代码片段。我要做的是从AccountController类中获取UserContext实例,并在AdminController类中使用它。我还可以补充一点,到数据库的连接工作正常。我什么都可以问。只是我不愿意创建UserContext的另一个实例

AccountController.cs:

[Authorize]
public class AccountController : Controller
{
    public AccountController()
        : this(new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(new UserContext())))
    {
    }

    public AccountController(UserManager<ApplicationUser> userManager)
    {
        UserManager = userManager;
    }

    public UserManager<ApplicationUser> UserManager { get; private set; }

    //
    // GET: /Account/Login
    [AllowAnonymous]
    public ActionResult Login(string returnUrl)
    {
        ViewBag.ReturnUrl = returnUrl;
        return View();
    }
    // Additional GET/POST/PUT/DELETE methods
[授权]
公共类AccountController:控制器
{
公共账户控制员()
:此(新UserManager(新UserStore(新UserContext()))
{
}
公共帐户控制器(用户管理器用户管理器)
{
UserManager=UserManager;
}
公共用户管理器用户管理器{get;private set;}
//
//获取:/Account/登录
[异名]
公共操作结果登录(字符串返回URL)
{
ViewBag.ReturnUrl=返回URL;
返回视图();
}
//附加的GET/POST/PUT/DELETE方法
AdminController.cs

/// <summary>The admin controller.</summary>
public class AdminController : Controller
{
    private UserContext userContext = new UserContext();

    public ActionResult Admin()
    {
        return this.View();
    }

    public ActionResult ManageUser()
    {
        var users = this.userContext.Users.ToList();

        return this.PartialView(users);
    }
///管理员控制器。
公共类AdminController:Controller
{
private UserContext UserContext=new UserContext();
公共操作结果管理()
{
返回这个.View();
}
公共操作结果ManageUser()
{
var users=this.userContext.users.ToList();
返回此.PartialView(用户);
}
UserContext.cs

public class UserContext : IdentityDbContext<ApplicationUser>
{
    public UserContext()
        : base("DefaultConnection")
    {

    }
}
public类用户上下文:IdentityDbContext
{
公共用户上下文()
:base(“默认连接”)
{
}
}
Web.config

<connectionStrings>
    <add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;AttachDbFilename=|DataDirectory|\aspnet-N44Web-20131104100543.mdf;Initial Catalog=aspnet-N44Web-20131104100543;Integrated Security=True"
  providerName="System.Data.SqlClient" />
</connectionStrings>

您可能正在谈论基于数据库表建模的用户模型。 您将使用datacontext为用户创建用户模型和数据库表之间的连接,通过这样做,您可以创建、更新、删除用户等

您可以通过Entityframeworks、NHibernate或其他标准ORM创建数据上下文


这是核心概念。如果您提供更多信息,我将能够提供更多帮助。

不同的控制器应具有不同的数据库上下文。 默认情况下,MVC控制器的生存期等于请求,因此在控制器上的方法完成后不能也不应该使用上下文


在AdminController的构造函数中实例化一个上下文,就像在AccountController中一样。

数据上下文和到数据库的连接已经存在。这不是问题。我的问题是,我有一个管理登录、注册等的account controller。当页面loads.对于该实例,我还有一个UserManager类的实例。在我的管理控制器中,我希望使用UserManager类的实例,而不是像我目前所做的那样创建一个新实例。希望这能更好地解释它。好的,我会这样做。谢谢你的回答