Quantcast
Channel: ADO.NET, Entity Framework, LINQ to SQL, NHibernate
Viewing all articles
Browse latest Browse all 1698

Create a New Schema via Migration

$
0
0

Hi Friends,

While learning ASP as I come across the need for setting up a new database with different tables being created as to be pertaining to different schemas I am unable to resolve the error being faced as:

Column 'Id' in table 'AspNetRoles' is of a type that is invalid for use as a key column in an index

while I attempt to have the usual CreateIdentity Migration being updated as:

protected override void Up(MigrationBuilder migrationBuilder)
{
    migrationBuilder.EnsureSchema("UsersData");

    migrationBuilder.CreateTable(
        name: "AspNetRoles",
        columns: table => new
        {
            Id = table.Column<string>(nullable: false),
            Name = table.Column<string>(maxLength: 256, nullable: true),
            NormalizedName = table.Column<string>(maxLength: 256, nullable: true),
            ConcurrencyStamp = table.Column<string>(nullable: true)
        },
        schema: "UsersData",
        constraints: table =>
        {
            table.PrimaryKey("PK_AspNetRoles", x => x.Id);
        });

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

    migrationBuilder.CreateTable(
        name: "AspNetRoleClaims",
        columns: table => new
        {
            Id = table.Column<int>(nullable: false)
                .Annotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn),
            RoleId = table.Column<string>(nullable: false),
            ClaimType = table.Column<string>(nullable: true),
            ClaimValue = table.Column<string>(nullable: true)
        },
        schema: "UsersData",
        constraints: table =>
        {
            table.PrimaryKey("PK_AspNetRoleClaims", x => x.Id);
            table.ForeignKey(
                name: "FK_AspNetRoleClaims_AspNetRoles_RoleId",
                column: x => x.RoleId,
                principalTable: "AspNetRoles",
                principalColumn: "Id",
                onDelete: ReferentialAction.Cascade);
        });

    migrationBuilder.CreateTable(
        name: "AspNetUserClaims",
        columns: table => new
        {
            Id = table.Column<int>(nullable: false)
                .Annotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn),
            UserId = table.Column<string>(nullable: false),
            ClaimType = table.Column<string>(nullable: true),
            ClaimValue = table.Column<string>(nullable: true)
        },
        schema: "UsersData",
        constraints: table =>
        {
            table.PrimaryKey("PK_AspNetUserClaims", x => x.Id);
            table.ForeignKey(
                name: "FK_AspNetUserClaims_AspNetUsers_UserId",
                column: x => x.UserId,
                principalTable: "AspNetUsers",
                principalColumn: "Id",
                onDelete: ReferentialAction.Cascade);
        });

    migrationBuilder.CreateTable(
        name: "AspNetUserLogins",
        columns: table => new
        {
            LoginProvider = table.Column<string>(maxLength: 128, nullable: false),
            ProviderKey = table.Column<string>(maxLength: 128, nullable: false),
            ProviderDisplayName = table.Column<string>(nullable: true),
            UserId = table.Column<string>(nullable: false)
        },
        schema: "UsersData",
        constraints: table =>
        {
            table.PrimaryKey("PK_AspNetUserLogins", x => new { x.LoginProvider, x.ProviderKey });
            table.ForeignKey(
                name: "FK_AspNetUserLogins_AspNetUsers_UserId",
                column: x => x.UserId,
                principalTable: "AspNetUsers",
                principalColumn: "Id",
                onDelete: ReferentialAction.Cascade);
        });

    migrationBuilder.CreateTable(
        name: "AspNetUserRoles",
        columns: table => new
        {
            UserId = table.Column<string>(nullable: false),
            RoleId = table.Column<string>(nullable: false)
        },
        schema: "UsersData",
        constraints: table =>
        {
            table.PrimaryKey("PK_AspNetUserRoles", x => new { x.UserId, x.RoleId });
            table.ForeignKey(
                name: "FK_AspNetUserRoles_AspNetRoles_RoleId",
                column: x => x.RoleId,
                principalTable: "AspNetRoles",
                principalColumn: "Id",
                onDelete: ReferentialAction.Cascade);
            table.ForeignKey(
                name: "FK_AspNetUserRoles_AspNetUsers_UserId",
                column: x => x.UserId,
                principalTable: "AspNetUsers",
                principalColumn: "Id",
                onDelete: ReferentialAction.Cascade);
        });

    migrationBuilder.CreateTable(
        name: "AspNetUserTokens",
        columns: table => new
        {
            UserId = table.Column<string>(nullable: false),
            LoginProvider = table.Column<string>(maxLength: 128, nullable: false),
            Name = table.Column<string>(maxLength: 128, nullable: false),
            Value = table.Column<string>(nullable: true)
        },
        schema: "UsersData",
        constraints: table =>
        {
            table.PrimaryKey("PK_AspNetUserTokens", x => new { x.UserId, x.LoginProvider, x.Name });
            table.ForeignKey(
                name: "FK_AspNetUserTokens_AspNetUsers_UserId",
                column: x => x.UserId,
                principalTable: "AspNetUsers",
                principalColumn: "Id",
                onDelete: ReferentialAction.Cascade);
        });

    migrationBuilder.CreateIndex(
        name: "IX_AspNetRoleClaims_RoleId",
        table: "AspNetRoleClaims",
        column: "RoleId",
        schema: "UsersData");

    migrationBuilder.CreateIndex(
        name: "RoleNameIndex",
        table: "AspNetRoles",
        column: "NormalizedName",
        schema: "UsersData",
        unique: true,
        filter: "[NormalizedName] IS NOT NULL");

    migrationBuilder.CreateIndex(
        name: "IX_AspNetUserClaims_UserId",
        table: "AspNetUserClaims",
        column: "UserId",
        schema: "UsersData");

    migrationBuilder.CreateIndex(
        name: "IX_AspNetUserLogins_UserId",
        table: "AspNetUserLogins",
        column: "UserId",
        schema: "UsersData");

    migrationBuilder.CreateIndex(
        name: "IX_AspNetUserRoles_RoleId",
        table: "AspNetUserRoles",
        column: "RoleId",
        schema: "UsersData");

    migrationBuilder.CreateIndex(
        name: "EmailIndex",
        table: "AspNetUsers",
        column: "NormalizedEmail",
        schema: "UsersData");

    migrationBuilder.CreateIndex(
        name: "UserNameIndex",
        table: "AspNetUsers",
        column: "NormalizedUserName",
        schema: "UsersData",
        unique: true,
        filter: "[NormalizedUserName] IS NOT NULL");
}

i.e. Custom Schema UsersData being used for the tables pertaining to the same.

Thus the requisite database does set up but without any of the tables, because of the said schema not being created.

How to achieve the same?

Thanks in advance.


Viewing all articles
Browse latest Browse all 1698

Trending Articles