当前位置: 首页 > 知识库问答 >
问题:

ASP.NET标识DbContext混淆

轩辕欣可
2023-03-14

默认的MVC 5应用程序在identitymodels.cs中附带了这段代码-这段代码用于默认模板的所有ASP.NET标识操作:

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

如果我使用带有实体框架的视图搭建一个新的控制器,并创建一个“新的数据上下文”...在对话框中,我得到为我生成的:

using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using System.Web;

namespace WebApplication1.Models
{
    public class AllTheOtherStuffDbContext : DbContext
    {
        // You can add custom code to this file. Changes will not be overwritten.
        // 
        // If you want Entity Framework to drop and regenerate your database
        // automatically whenever you change your model schema, please use data migrations.
        // For more information refer to the documentation:
        // http://msdn.microsoft.com/en-us/data/jj591621.aspx

        public AllTheOtherStuffDbContext() : base("name=AllTheOtherStuffDbContext")
        {
        }

        public System.Data.Entity.DbSet<WebApplication1.Models.Movie> Movies { get; set; }

    }
} 
using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using System.Web;

namespace WebApplication1.Models
{
    public class AllTheOtherStuffDbContext : DbContext
    {
        // You can add custom code to this file. Changes will not be overwritten.
        // 
        // If you want Entity Framework to drop and regenerate your database
        // automatically whenever you change your model schema, please use data migrations.
        // For more information refer to the documentation:
        // http://msdn.microsoft.com/en-us/data/jj591621.aspx

        public AllTheOtherStuffDbContext() : base("name=AllTheOtherStuffDbContext")
        {
        }

        public System.Data.Entity.DbSet<WebApplication1.Models.Movie> Movies { get; set; }
        public System.Data.Entity.DbSet<WebApplication1.Models.Animal> Animals { get; set; }

    }
} 

我应该将这两个(applicationdbcontextAllotherStuffdbcontext)中的哪一个用于我自己的所有其他模型?或者我应该只使用默认的自动生成的applicationdbcontext,因为它是从基类dbcontext派生的,所以使用它应该不成问题,或者会有一些开销?您应该在应用程序中对所有模型只使用一个dbcontext对象(我在某个地方读过),所以我甚至不应该考虑在单个应用程序中同时使用applicationdbcontextallotherstuffdbcontext?或者什么是具有ASP.NET标识的MVC5中的最佳实践?

共有1个答案

顾乐家
2023-03-14

我将使用从IdentityDbContext继承的单个上下文类。这样,您可以让上下文知道您的类与IdentityUser和IdentityDbContext的角色之间的任何关系。IdentityDbContext中的开销很小,它基本上是一个有两个dbset的常规DbContext。一个用于用户,一个用于角色。

 类似资料:
  • 我实现了一个ASP.NET MVC(.NET Framework)标识,注册页和登录身份验证页按预期自动生成。 我想有一个单独的页面,虽然注册用户列表,这是我所做的。 添加Controller-MVC5和VIE,使用实体框架自动生成CRUD功能。 请告知

  • 我正在使用VS 2013 ASP.NET 4.5.1,并使用个人用户帐户选项创建了一个内部webforms应用程序进行身份验证。我想使用LDAP对用户进行身份验证,并使用为个人用户帐户创建的SQL DB选项保存用户信息和角色。我们没有Active Directory联合身份验证服务(AD FS),因此无法使用内部验证方法。 AD用户名将存储在SQL DB中 如何使用LDAP对用户进行身份验证,然后

  • 我有一个生成密码重置令牌的Webapi服务。 令牌生成服务endpoint:

  • 编辑:这个问题已经过时了 在我问这个问题的时候,身份框架是一个移动的目标。作者改变了相当多的东西,他们已经脱钩了其他几个,使一切变得更容易。 看一下GitHub上的ASP.NET标识示例项目。 我得到一个异常。ApplicationDbContext的定义由新建应用程序向导自动生成: 因此,我的猜测是,列用于区分和。但是,它不存在于我的数据库中(该数据库是由应用程序自动创建的)

  • 我是ASP.NET新手,我必须使用身份验证和授权框架创建一个ASP.NET MVC项目,但对数据库(SQL Server)的访问必须在一个独立的web服务项目中完成,所以我创建了一个web API项目,该项目还包含请求数据库的应用程序的所有服务,即使是通过调用web API的方法而不是ASP.NET MVC项目的方法来完成身份验证,而且一切都很好。 请帮忙。

  • 通过复制VS2013模板中的代码,我在MVC应用程序中实现了ASP.NET标识。基本的东西是工作的,但我不能得到重置密码工作。当我显示“忘记密码”页面时,将生成一封包含令牌的电子邮件。方法返回此标记: