迁移中的Entity Framework 7复合键

第二

我第一次尝试使用MVC 6,Entity Framework 7和ASP.NET Identity。我刚刚生成了一个默认项目,并且正在根据以下教程更改登录过程以支持租户的帐户。

https://www.scottbrady91.com/ASPNET-Identity/Quick-and-Easy-ASPNET-Identity-Multitenancy

问题是,当我尝试更改初始迁移以支持AspNetUsers表上的复合键(Id,TenentId)时,它只会失败并显示一条通用消息。迁移代码如下。

migrationBuilder.CreateTable(
                name: "AspNetUsers",
                columns: table => new
                {
                    Id = table.Column<string>(nullable: false),
                    TenantId = table.Column<string>(nullable: false),
                    AccessFailedCount = table.Column<int>(nullable: false),
                    ConcurrencyStamp = table.Column<string>(nullable: true),
                    Email = table.Column<string>(nullable: true),
                    EmailConfirmed = table.Column<bool>(nullable: false),
                    LockoutEnabled = table.Column<bool>(nullable: false),
                    LockoutEnd = table.Column<DateTimeOffset>(nullable: true),
                    NormalizedEmail = table.Column<string>(nullable: true),
                    NormalizedUserName = table.Column<string>(nullable: true),
                    PasswordHash = table.Column<string>(nullable: true),
                    PhoneNumber = table.Column<string>(nullable: true),
                    PhoneNumberConfirmed = table.Column<bool>(nullable: false),
                    SecurityStamp = table.Column<string>(nullable: true),
                    TwoFactorEnabled = table.Column<bool>(nullable: false),
                    UserName = table.Column<string>(nullable: true)                    
                },
                constraints: table =>
                {
                    table.PrimaryKey("PK_ApplicationUser", x => new { x.Id, x.TenantId });
                });

我也尝试了以下代码,但也无法正常工作。

constraints: table =>
                    {
                        table.PrimaryKey("PK_ApplicationUser", x => x.Id);     
                        table.PrimaryKey("PK_ApplicationUser", x => x.TenantId);    
                    });

如果我将其保留为非复合键,则迁移将成功执行。

constraints: table =>
                {
                    table.PrimaryKey("PK_ApplicationUser", x => x.Id);
                });

我试图在两列上定义一个唯一约束,但是我找不到解决方法。

有人对此有任何想法吗?

克林特B

身份表的任何自定义都需要通过创建身份模型类的派生类和/或通过从IdentityDbContext该类创建派生类来完成

但是我不会尝试更改身份表的主键结构。我严重怀疑这种做法是否会奏效,如果能奏效,则无法保证它会正常工作。

为了使您指向正确的方向,这是我修改IdentityUser类(AspNetUsers表)的方式。我添加了一些属性来存储从Active Directory中检索到的数据。

public class ApplicationUser : IdentityUser
{
    [Required]
    [StringLength(50)]
    public string FirstName { get; set; }

    [Required]
    [StringLength(50)]
    public string LastName { get; set; }

    [Required]
    public bool Active { get; set; }
}

为此,您需要从IdentityDbContext使用上述模型类类中创建一个派生类在我的我重命名身份表。

public class MyDbContext : IdentityDbContext<ApplicationUser>
{
    protected override void OnModelCreating(ModelBuilder builder)
    {
        base.OnModelCreating(builder);

        //Rename the ASP.NET Identity tables.
        builder.Entity<ApplicationUser>().ToTable("User");
        builder.Entity<IdentityRole>().ToTable("Role");
        builder.Entity<ApplicationRole>().ToTable("Role");
        builder.Entity<IdentityUserRole<string>>().ToTable("UserRole");
        builder.Entity<IdentityUserLogin<string>>().ToTable("UserLogin");
        builder.Entity<IdentityUserClaim<string>>().ToTable("UserClaim");
        builder.Entity<IdentityRoleClaim<string>>().ToTable("UserRoleClaim");
    }
}

然后在Startup.cs的ConfigureServices()方法中

//Add Identity services.
services.AddIdentity<ApplicationUser, IdentityRole>()
    .AddEntityFrameworkStores<MyDbContext>()  
    .AddDefaultTokenProviders();

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

具有配置的类库中的Entity Framework 7迁移脚手架

来自分类Dev

在Code-First Entity Framework中的复合主键中包含外键

来自分类Dev

使用“迁移”的Entity Framework 6.0.2中的错误

来自分类Dev

如何在Entity Framework Core的复合键中使用常量配置关系?

来自分类Dev

C# -> Entity Framework 6.1.3 -> 复合可为空的外键字符串

来自分类Dev

在Entity Framework Core中创建迁移时,如何配置DbContext?

来自分类Dev

如何在Entity Framework 6.0中禁用迁移

来自分类Dev

无法迁移 Entity Framework Core 中的 DbContext 类

来自分类Dev

更改Entity Framework 7中的列?

来自分类Dev

Entity Framework 7 ASP.NET Beta 8中缺少键,集合和参考定义的错误

来自分类Dev

EF中的复合键

来自分类Dev

如何使用Powershell在远程数据库上运行Entity Framework 7迁移?

来自分类Dev

Entity Framework 7难以创建迁移,因为存在具有相同名称的导航属性

来自分类Dev

Cassandra中的Astyanax复合键

来自分类Dev

JavaScript中的复合键表示

来自分类Dev

cassandra中的复合分区键

来自分类Dev

如何设置Entity Framework Core迁移超时?

来自分类Dev

合并多个迁移Entity Framework代码优先

来自分类Dev

使用Entity Framework时是否需要迁移?

来自分类Dev

合并多个迁移Entity Framework代码优先

来自分类Dev

如何在Visual Studio 2012中降级Entity Framework 5迁移?

来自分类Dev

在Entity Framework Core中为所有数据库创建和应用迁移

来自分类Dev

Entity Framework 6.1.2中基于代码的数据库迁移:如何避免使用powershell命令?

来自分类Dev

在Entity Framework Core中为所有数据库创建和应用迁移

来自分类Dev

使用动态数据库连接在 Entity Framework Core 中添加迁移

来自分类Dev

Map <String,Entity>在实体中具有复合键

来自分类Dev

确保Entity Framework 7中的唯一值

来自分类Dev

如何全局禁用Entity Framework 7中的延迟加载?

来自分类Dev

明确映射Entity Framework 7中的接口成员

Related 相关文章

  1. 1

    具有配置的类库中的Entity Framework 7迁移脚手架

  2. 2

    在Code-First Entity Framework中的复合主键中包含外键

  3. 3

    使用“迁移”的Entity Framework 6.0.2中的错误

  4. 4

    如何在Entity Framework Core的复合键中使用常量配置关系?

  5. 5

    C# -> Entity Framework 6.1.3 -> 复合可为空的外键字符串

  6. 6

    在Entity Framework Core中创建迁移时,如何配置DbContext?

  7. 7

    如何在Entity Framework 6.0中禁用迁移

  8. 8

    无法迁移 Entity Framework Core 中的 DbContext 类

  9. 9

    更改Entity Framework 7中的列?

  10. 10

    Entity Framework 7 ASP.NET Beta 8中缺少键,集合和参考定义的错误

  11. 11

    EF中的复合键

  12. 12

    如何使用Powershell在远程数据库上运行Entity Framework 7迁移?

  13. 13

    Entity Framework 7难以创建迁移,因为存在具有相同名称的导航属性

  14. 14

    Cassandra中的Astyanax复合键

  15. 15

    JavaScript中的复合键表示

  16. 16

    cassandra中的复合分区键

  17. 17

    如何设置Entity Framework Core迁移超时?

  18. 18

    合并多个迁移Entity Framework代码优先

  19. 19

    使用Entity Framework时是否需要迁移?

  20. 20

    合并多个迁移Entity Framework代码优先

  21. 21

    如何在Visual Studio 2012中降级Entity Framework 5迁移?

  22. 22

    在Entity Framework Core中为所有数据库创建和应用迁移

  23. 23

    Entity Framework 6.1.2中基于代码的数据库迁移:如何避免使用powershell命令?

  24. 24

    在Entity Framework Core中为所有数据库创建和应用迁移

  25. 25

    使用动态数据库连接在 Entity Framework Core 中添加迁移

  26. 26

    Map <String,Entity>在实体中具有复合键

  27. 27

    确保Entity Framework 7中的唯一值

  28. 28

    如何全局禁用Entity Framework 7中的延迟加载?

  29. 29

    明确映射Entity Framework 7中的接口成员

热门标签

归档