Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //EF Core creates duplicates of joining table of many to many relation.
- //I'm using EF Core dbcontext based on IdentityDbContext
- //With 3 related models:
- public class User : IdentityUser<Guid>
- {
- public override string UserName { get; set; }
- [AdaptIgnore]
- public override string NormalizedUserName { get; set; }
- public override string Email { get; set; }
- [AdaptIgnore]
- public override string NormalizedEmail { get; set; }
- [AdaptIgnore]
- public override bool EmailConfirmed { get; set; }
- [AdaptIgnore]
- public override string PasswordHash { get; set; }
- [AdaptIgnore]
- public override string SecurityStamp { get; set; }
- [AdaptIgnore]
- public override string ConcurrencyStamp { get; set; }
- [AdaptIgnore]
- public override string PhoneNumber { get; set; }
- [AdaptIgnore]
- public override bool PhoneNumberConfirmed { get; set; }
- [AdaptIgnore]
- public override bool TwoFactorEnabled { get; set; }
- [AdaptIgnore]
- public override DateTimeOffset? LockoutEnd { get; set; }
- [AdaptIgnore]
- public override bool LockoutEnabled { get; set; }
- [AdaptIgnore]
- public override int AccessFailedCount { get; set; }
- [AdaptIgnore]
- public List<Role> Roles { get; set; }
- }
- public class Role : IdentityRole<Guid>
- {
- public override string Name { get; set; }
- [AdaptIgnore]
- public override string NormalizedName { get; set; }
- [AdaptIgnore]
- public override string ConcurrencyStamp { get; set; } = Guid.NewGuid().ToString();
- public List<User> Users { get; set; }
- }
- public class UserRole : IdentityUserRole<Guid>
- {
- public override Guid UserId { get; set; }
- public override Guid RoleId { get; set; }
- }
- //It Creates duplicates in migration:
- migrationBuilder.CreateTable(
- name: "RoleUser",
- columns: table => new
- {
- RolesId = table.Column<Guid>(type: "uuid", nullable: false),
- UsersId = table.Column<Guid>(type: "uuid", nullable: false)
- },
- constraints: table =>
- {
- table.PrimaryKey("PK_RoleUser", x => new { x.RolesId, x.UsersId });
- table.ForeignKey(
- name: "FK_RoleUser_Roles_RolesId",
- column: x => x.RolesId,
- principalTable: "Roles",
- principalColumn: "Id",
- onDelete: ReferentialAction.Cascade);
- table.ForeignKey(
- name: "FK_RoleUser_Users_UsersId",
- column: x => x.UsersId,
- principalTable: "Users",
- principalColumn: "Id",
- onDelete: ReferentialAction.Cascade);
- });
- migrationBuilder.CreateTable(
- name: "UserRoles",
- columns: table => new
- {
- UserId = table.Column<Guid>(type: "uuid", nullable: false),
- RoleId = table.Column<Guid>(type: "uuid", nullable: false)
- },
- constraints: table =>
- {
- table.PrimaryKey("PK_UserRoles", x => new { x.UserId, x.RoleId });
- table.ForeignKey(
- name: "FK_UserRoles_Roles_RoleId",
- column: x => x.RoleId,
- principalTable: "Roles",
- principalColumn: "Id",
- onDelete: ReferentialAction.Cascade);
- table.ForeignKey(
- name: "FK_UserRoles_Users_UserId",
- column: x => x.UserId,
- principalTable: "Users",
- principalColumn: "Id",
- onDelete: ReferentialAction.Cascade);
- });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement