- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在将一个使用 Membership 的现有网络应用程序移植到一个使用 Identity 的新应用程序。我已经更新了所有表定义,在 VS Community Edition 2015 版本 14.0.25431.01 Update 3 中创建了一个新的 MVC 5 Web 应用程序,然后引入了旧项目中的代码,以及我在 Adam Freeman 的项目中尝试过的一些代码书。
But UserManager etc seem to want both dbo.Users and dbo.AspNetUsers.
如何初始化 Identity ApplicationDBContext 以便 UserManager、SignInManager 等可以从数据库读取?任何帮助都会很棒。
目前,当 Users 表命名为“Users”时,出现以下错误:
Server Error in '/' Application.
Invalid object name 'dbo.AspNetUsers'.
Exception Details: System.Data.SqlClient.SqlException: Invalid object name 'dbo.AspNetUsers'.
Line 150: User tempUser = await UserManager.FindAsync(model.UserName, model.Password);
当表按照建议命名为“AspNetUsers”时 here ,我得到错误:
Invalid object name 'dbo.Users'.
Exception Details: System.Data.SqlClient.SqlException: Invalid object name 'dbo.Users'.
作为引用,Identity 对象没有从模板定义中更改:
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
public ApplicationDbContext()
: base("IdentityEFContext", throwIfV1Schema: false)
{
}
public static ApplicationUserManager Create(IdentityFactoryOptions<ApplicationUserManager> options, IOwinContext context)
{
ApplicationUserManager manager = new ApplicationUserManager(new UserStore<ApplicationUser>(context.Get<ApplicationDbContext>()));
...
}
public class ApplicationUser : User
{
public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<ApplicationUser> manager)
{
var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie);
return userIdentity;
}
}
传统的 EF 代码可以工作,例如
private IdentityEFContext dbContext
{
get
{
return HttpContext.GetOwinContext().Get<IdentityEFContext>();
}
}
List<Activity> Activities = dbContext.Activities.ToList();
List<User> Users = dbContext.Users.ToList();
Identity 之外的上下文定义首先是标准的 EF 代码:
public class IdentityEFContext : IdentityDbContext<User>
{
public IdentityEFContext() : base("IdentityEFContext") { }
//public DbSet<UserLogin> UserLogins { get; set; }
//public DbSet<UserClaim> UserClaims { get; set; }
//public DbSet<UserRole> UserRoles { get; set; }
public DbSet<Activity> Activities { get; set; }
//public DbSet<User> Users { get; set; }
//public DbSet<User> AppUsers { get; set; }
...
}
用户的表名是使用 Fluent 定义的
public class UserConfig : EntityTypeConfiguration<User>
{
public UserConfig()
{
ToTable("AspNetUsers");
HasKey(u => u.Id);
...
}
}
想知道这是否相关。我尝试了以下,applicationDBContext 只包含角色和用户。这应该提供所有需要的信息,但我想我会报告。
ApplicationDbContext db1 = context.Get<ApplicationDbContext>(); // contains ROLES And USERS
IdentityEFContext db2 = context.Get<IdentityEFContext>(); // contains all tables for all defined dbsets
最佳答案
用户模型
public class User : IdentityUser
{
public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<User> manager)
{
// Note the authenticationType must match the one defined in CookieAuthenticationOptions.AuthenticationType
var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie);
// Add custom user claims here
return userIdentity;
}
}
ApplicationDbContext
public class ApplicationDbContext : IdentityDbContext<User>
{
public ApplicationDbContext()
: base("IdentityEFContext", throwIfV1Schema: false)
{
}
public static ApplicationDbContext Create()
{
return new ApplicationDbContext();
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<User>()
.ToTable("User");
}
}
应用程序用户管理器
public static ApplicationUserManager Create(IdentityFactoryOptions<ApplicationUserManager> options, IOwinContext context)
{
ApplicationUserManager manager = new ApplicationUserManager(new UserStore<User>(context.Get<ApplicationDbContext>()));
...
}
关于c# - 身份用户的数据库定义 - dbo.AspNetUsers 和 dbo.Users,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43172193/
在查询中写入以下内容有区别吗: SELECT * FROM dbo.Product 相比于: SELECT * FROM [dbo].[Product] 一个比另一个好还是无关紧要? 最佳答案 没有区
这是有效的 dbo.dbo 吗?如果是,那是什么意思?我在别人写的查询中发现了这一点: 从dbo.tmp_BDCode aob inner join dbo.dbo.tmp_BDCode_03 ao
当我创建一个新表时,我知道我可以执行以下操作: CREATE TABLE Users ( [Id] INT NOT NULL PRIMARY KEY ) 但是 [dbo].以下示例中的部分含义
我正在将一个使用 Membership 的现有网络应用程序移植到一个使用 Identity 的新应用程序。我已经更新了所有表定义,在 VS Community Edition 2015 版本 14.0
我正在使用 Entity Framework 5 并执行一个简单的查询以从表中获取一些用户。 SQL 数据库已经创建,所以我使用我的实体作为映射我所拥有的东西的一种方式。 当我运行我的查询时,我检测到
我使用了以下分割函数: CREATE FUNCTION dbo.Splitfn(@String varchar(8000), @Delimiter char(1)) returns @te
我使用的是 sql server 2008 r2。 我想为我的所有作业创建脚本以进行备份。 我需要找到一个作业中存在的所有对象。现在我可以做到了,但是 为了实现这个目标,我得到了这个查询的所有运算符
我有一个带有一些函数和触发器的 SQL 项目。 在 Visual Studio 2010 中,我可以只指定数据库连接字符串并进行部署。这很好用。 但是现在迁移到 Visual Studio 2013
我们的应用程序不需要身份使用的过多“登录”和“声明”功能。如果没有在数据库中创建这些表 simlpy 就好了,但我不想重新实现所有身份类... 我猜是这样的 public ApplicationDbC
我已经设置了正确的 SQL Server 版本并添加了 master 数据库作为数据库引用。 在添加引用之前和之后,master 数据库有几个 Unresolved 引用,所有这些引用都消失了。 只有
我刚刚在 TFS2012 服务器上下载并安装了 Team Foundation Server 2012 Update 1,现在无法配置构建 Controller 或编辑构建定义。 我从这里下载了更新:
我在服务器中发送请求。 $custormerParams = array( "CustomerID" =>123, "CustomerAltID" =>'cus
您好,我在 sqlserver 2008 中创建了一个 udf 函数...当我尝试访问它时出现错误“无效的对象名称 'dbo.Function_Client”我想从表中返回记录数并将其分配给变量以返回
当我扫描我的数据库时,它显示了一个结果,如 VA1143 'dbo' user should not be used for normal service operation in 漏洞评估扫描 他们
我已经尝试用以下 100 种不同的方式编写代码,但无法找出正确的语法。看来无论我怎么写, $loggeduser 都不会传递给 WHERE 用户名。我究竟做错了什么?什么是正确的语法? $query
在我的本地或专用服务器上,当我创建一个表时,我看到表名如下: dbo.Foo 因为我从某个 plesk 环境中获得了一个数据库帐户,所以创建的表的名称为: mydbuser.Foo 前缀对我的代码有何
我从旧的 sql server (2000) 导入了一堆表到我的 2008 数据库。所有导入的表都以我的用户名为前缀,例如:jonathan.MovieData。在表 properties 中,它将
我的一位同事给我一项任务,要确保存储过程中的所有表名和页面都包含相关模式? 例如,如果我在数据库中有一个表是 dbo.table1,那么在查询中如果我有: Select * from table1 他
我收到此错误:[SqlException (0x80131904): Invalid object name 'dbo.UserRoles'.],但我无法捕捉到错误所在。我可以从其他表中检索其他数据,
在此问题上,我的SQL出现问题,我已经从sys.servers中选择了*,以检查是否列出了我的服务器。 我还从sys.servers中执行了查询选择名称,并且列出了我的服务器名称。 这是我的代码
我是一名优秀的程序员,十分优秀!