- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
IdentityDbContext
似乎存在很多混淆。
如果我们在我们的应用程序中创建两个数据库上下文,一个用于身份,一个用于我们的自定义业务数据,身份数据库上下文继承自 IdentityDbContext
,而我们的自定义业务数据继承自 DbContext
.
所以让我们将以下内容添加到 Controller 中:
private MyDbContext db = new MyDbContext();
private ApplicationDbContext identityDb = new ApplicationDbContext();
Controller 中的 Index 方法如下:
var thingsInMyBusinessDb = db.Things.ToList();
var usersInIndentityDb = identityDb.AspNetUsers.ToList(); // THIS WILL HAVE AN ERROR
var roles = identityDb.AspNetRoles.ToList(); // ERROR
您还会注意到身份数据库中的表不可用。 这是为什么?
目前从 2.0.0-beta1 开始有一个用户和角色项目,但我希望实际的表可用。 为什么不呢?如果我想进入 AspNetUserRoles 怎么办
如果像 Entity Framework 中的任何数据库上下文一样对待它,那么 Asp.Net Identity 的许多困惑和问题似乎都会消失。
最佳答案
ApplicationDbContext
的Users
和Roles
属性映射到AspNetUsers
和AspNetRoles
表和其余实体(Claims
、Logins
、UserRoles
)通过导航属性自动映射。据我所知,ApplicationDbContext
中只有表名前缀为“AspNet”的自定义映射,其他一切都只是 Entity Framework Code First 约定。
如果您需要通过 ApplicationDbContext
直接访问表,您可以这样做...
using (var context = new ApplicationDbContext())
{
var users = context.Users.Include(u => u.Claims)
.Include(u => u.Logins)
.Include(u => u.Roles)
.ToList();
var roles = context.Roles.ToList();
}
您可以通过 IdentityUser
实体(来自 Users
DbSet
)的导航属性访问用户的角色、声明和登录。如果您想直接查询它们,请将它们显式添加为上下文中的 DbSet
...
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
public ApplicationDbContext()
: base("DefaultConnection")
{
}
public DbSet<IdentityUserRole> UserRoles { get; set; }
public DbSet<IdentityUserClaim> Claims { get; set; }
public DbSet<IdentityUserLogin> Logins { get; set; }
}
然后像这样查询它们...
var claims = context.Claims.ToList();
var userRoles = context.UserRoles.ToList();
var logins = context.Logins.ToList();
ASP.NET Identity 2.0 为方便起见在 Manager 类上公开了 Users
和 Roles
IQueryable
,但它不提供任何添加的功能优于 DbContext 提供的功能。
关于c# - 为什么 Asp.Net Identity IdentityDbContext 是黑盒?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22105583/
我正在尝试使用 Entity Framework、Autofac 和 Identity 2.0 将初始用户设置为管理员角色这是我的应用程序上下文类: public class ApplicationC
我需要向已有事件用户数据库的系统添加 ASP.NET Web API。 根据我使用内置于 asp.net 中的默认标识的经验,它通常使用代码优先方法从头开始创建表。这显然不是我正在寻找的方法。 我如何
有了我自己的 IdentityDbContext 实现,我希望它能够根据用户的选择连接到自定义数据库。所以我为默认数据库和用户选择的数据库创建了 2 个构造函数。 public class Appli
我有一个网络 API。我希望它有两种类型的用户。它们完全无关。 我如何管理它们的身份验证? 我不想将它们放在同一个表中并将它们的类型管理为角色,因为它们是不同的实体。一种用户供人类使用,另一种用户供服
非常类似于IdentityDbContext how to run migrations ,但似乎没有什么可以解决我的问题。我已经完成了研究,似乎没有太多关于使用 IdentityDbContext
我读到新的 EF7 允许内存存储,这使得单元测试更加容易。这在 DbContext 上效果很好,但我目前遇到的问题是我使用的是 IdentityDbContext,它没有随附该选项,或者我到目前为止还
找了将近2天没找到答案,特来这里问一下。 我刚开始使用 ASP.NET MVC 5。我已经设法扩展了默认的 ApplicationUser : IdentityUser 类,所以现在它存储了关于用户的
我一直在尝试将 sqlite 用于 IdentityDbContext 但没有成功,我在 macosx 中使用 .net 核心。我想知道这是否真的可能,或者是否有任何例子试图在没有运气的情况下搜索谷歌
我试图开发一个应用程序并创建我自己的数据库,然后首先使用数据库将其反射(reflect)到实体模型中。所以我现在已经有了让我们说 myOwnDBContext。 然后我认为将它与 IdentityDb
我有一个使用“Tracker Enabled DbContext”的现有 EF 项目。要使用这个包,我必须从它的“TrackerContext”派生: public class MyContext :
是否可以合并 DBContext 和 IdentityDbContext - 启用迁移,然后使用一个更新语句管理对我的数据库的代码优先更新? 即。在我的 IdentityModels.cs 文件中,我
我制作此方法是为了使单元测试 DbContext 更容易。此方法在内存中生成我的 db 的 Context。它之所以有效,是因为我使用实体对其进行了测试(如 _context.Projects、_co
我正在尝试在 ASP.NET Core 应用程序中使用 Entity Framework Core Identity 我已经创建了 Database Context 及其接口(interface),如
我开发了一个 MVC5 应用程序。数据库上下文派生自 IdentityDbContext。当我创建数据库上下文的实例并调用基类时,IdentityDbContext 正在调用 Database.Exi
我正试图摆脱代码优先迁移。 问题是 AspNetUsers 正在扩展 IdentityUser。结果,当我尝试使用 DbContext 时,出现以下错误。 EntityType 'IdentityUs
我有一个 IdentityDbContext,其中 ApplicationUser : IdentityUser 有一个双重 self 引用表来映射不同成员之间的 FriendShip: public
我的应用程序(内置于 MVC5/EF6 中)需要使用具有两个模式的单个数据库: identity:存储用户和角色的所有 AspNet 身份表。 application:存放我所有的通用应用表。 我想为
我正在尝试使用 IdentityDbContext 类设置自动迁移更新,并将更改传播到整个数据库的实际 DbContext。 在我进入代码之前,在我使用自动迁移实现 IdentityDbContext
我正在构建一个使用 token 进行授权的 web.api 服务。我遵循了 Dominick Baier 在他的博客中使用的指南 here . 今天我更新了 Owin、Entity Framework
我之前从“ASP.NET Core:安全性”LinkedIn 学习类(class) (https://1drv.ms/u/s!Ap1TSQ4qoVyxgrImtb6ZFwZXQGW2BA) 创建了一个
我是一名优秀的程序员,十分优秀!