Advertisement
MyOnAsSalat

Untitled

Sep 30th, 2022
1,019
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.09 KB | Fixit | 0 0
  1. //EF Core creates duplicates of joining table of many to many relation.
  2. //I'm using EF Core dbcontext based on IdentityDbContext
  3. //With 3 related models:
  4.  
  5.     public class User : IdentityUser<Guid>
  6.     {
  7.         public override string UserName { get; set; }
  8.         [AdaptIgnore]
  9.         public override string NormalizedUserName { get; set; }
  10.         public override string Email { get; set; }
  11.         [AdaptIgnore]
  12.         public override string NormalizedEmail { get; set; }
  13.         [AdaptIgnore]
  14.         public override bool EmailConfirmed { get; set; }
  15.         [AdaptIgnore]
  16.         public override string PasswordHash { get; set; }
  17.         [AdaptIgnore]
  18.         public override string SecurityStamp { get; set; }
  19.         [AdaptIgnore]
  20.         public override string ConcurrencyStamp { get; set; }
  21.         [AdaptIgnore]
  22.         public override string PhoneNumber { get; set; }
  23.         [AdaptIgnore]
  24.         public override bool PhoneNumberConfirmed { get; set; }
  25.         [AdaptIgnore]
  26.         public override bool TwoFactorEnabled { get; set; }
  27.         [AdaptIgnore]
  28.         public override DateTimeOffset? LockoutEnd { get; set; }
  29.         [AdaptIgnore]
  30.         public override bool LockoutEnabled { get; set; }
  31.         [AdaptIgnore]
  32.         public override int AccessFailedCount { get; set; }
  33.         [AdaptIgnore]
  34.         public List<Role> Roles { get; set; }
  35.     }
  36.  
  37.  
  38.  
  39.     public class Role : IdentityRole<Guid>
  40.     {
  41.  
  42.         public override string Name { get; set; }
  43.         [AdaptIgnore]
  44.         public override string NormalizedName { get; set; }
  45.         [AdaptIgnore]
  46.         public override string ConcurrencyStamp { get; set; } = Guid.NewGuid().ToString();
  47.         public List<User> Users { get; set; }
  48.     }
  49.  
  50.  
  51.  
  52.     public class UserRole : IdentityUserRole<Guid>
  53.     {
  54.         public override Guid UserId { get; set; }
  55.         public override Guid RoleId { get; set; }
  56.     }
  57.  
  58. //It Creates duplicates in migration:
  59.  
  60.             migrationBuilder.CreateTable(
  61.                 name: "RoleUser",
  62.                 columns: table => new
  63.                 {
  64.                     RolesId = table.Column<Guid>(type: "uuid", nullable: false),
  65.                     UsersId = table.Column<Guid>(type: "uuid", nullable: false)
  66.                 },
  67.                 constraints: table =>
  68.                 {
  69.                     table.PrimaryKey("PK_RoleUser", x => new { x.RolesId, x.UsersId });
  70.                     table.ForeignKey(
  71.                         name: "FK_RoleUser_Roles_RolesId",
  72.                         column: x => x.RolesId,
  73.                         principalTable: "Roles",
  74.                         principalColumn: "Id",
  75.                         onDelete: ReferentialAction.Cascade);
  76.                     table.ForeignKey(
  77.                         name: "FK_RoleUser_Users_UsersId",
  78.                         column: x => x.UsersId,
  79.                         principalTable: "Users",
  80.                         principalColumn: "Id",
  81.                         onDelete: ReferentialAction.Cascade);
  82.                 });
  83.  
  84.  
  85. migrationBuilder.CreateTable(
  86.                 name: "UserRoles",
  87.                 columns: table => new
  88.                 {
  89.                     UserId = table.Column<Guid>(type: "uuid", nullable: false),
  90.                     RoleId = table.Column<Guid>(type: "uuid", nullable: false)
  91.                 },
  92.                 constraints: table =>
  93.                 {
  94.                     table.PrimaryKey("PK_UserRoles", x => new { x.UserId, x.RoleId });
  95.                     table.ForeignKey(
  96.                         name: "FK_UserRoles_Roles_RoleId",
  97.                         column: x => x.RoleId,
  98.                         principalTable: "Roles",
  99.                         principalColumn: "Id",
  100.                         onDelete: ReferentialAction.Cascade);
  101.                     table.ForeignKey(
  102.                         name: "FK_UserRoles_Users_UserId",
  103.                         column: x => x.UserId,
  104.                         principalTable: "Users",
  105.                         principalColumn: "Id",
  106.                         onDelete: ReferentialAction.Cascade);
  107.                 });
  108.  
  109.  
  110.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement