两个IdentityDbContext在同一个数据库中

Ric*_*olo 3 c# asp.net-mvc entity-framework asp.net-web-api asp.net-identity

我有一个网络API.我希望它有两种类型的用户.它们完全不相关.

如何管理他们的身份验证?

我不希望将它们放在同一个表中并将它们的类型作为角色来管理,因为它们是不同的实体.一种用户由人使用,另一种由服务使用.他们有不同的类和属性.我想有两个IdentityDbContext,但我想在同一个数据库中维护所有.你觉得可能吗?

Ped*_*tos 6

我不确定这是不是一个好习惯,但你可以使用不同的模式,例如:

[dbo] .UserProfile和[webapi] .UserProfile

据我所知,您正在使用ASP.NET MVC并使用Empty Project附带的默认IdentityDbContext.

它使用CodeFirst方法在数据库上创建表.您只需创建所需的另一个并将其配置为使用不同的模式.

编辑 - 示例

注意[表("UserProfile",Schema = "dbo")]和[表("UserProfile",Schema = "webapi")]

这样,EF会注意到您正在尝试从不同的表中获取数据.

[Table("UserProfile", Schema = "dbo")]
public class UserProfile
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int UserId { get; set; }
    public string UserName { get; set; }
}

[Table("UserProfile", Schema = "webapi")]
public class UserProfileWebApi
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int UserId { get; set; }
    public string UserName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

如果您想更进一步,可以为这两个类创建一个接口.但同样,我不相信这是一个好习惯,你应该创建一个具有不同名称的表格以避免混淆.