Điều này có thể đến hơi muộn đối với bạn nhưng tôi sẽ để lại nó trong trường hợp bất kỳ ai khác gặp phải vấn đề tương tự. Các bước sau sẽ hoạt động nếu bạn không muốn thực hiện bất kỳ thay đổi nào đối với IdentityUser mặc định (ví dụ:nếu bạn đồng ý với việc có ID char thay vì int hoặc long) và chỉ muốn các bảng trên lược đồ Oracle hiện có của bạn.
-
Tạo bảng Identity trên Oracle. Bạn có thể thay đổi tên bảng nếu muốn, chỉ cần đảm bảo bao gồm các cột cần thiết để Identity hoạt động với nó. Bạn cũng có thể thêm bất kỳ cột bổ sung nào mà bạn có thể cần trên ứng dụng của mình (tập lệnh ban đầu được tìm thấy trên Devart , Tôi đã sao chép nó vào một ý chính trong trường hợp URL bị ngắt):
Gist đây
-
Nếu bạn đang sử dụng tệp EDMX, bạn cần thêm một chuỗi kết nối mới vì chuỗi được tạo tự động sẽ không hoạt động, bạn cần một chuỗi kết nối chuẩn. Hãy thử làm theo mẫu này:
<add name="IdentityContext" connectionString="Data Source=localhost:1521/xe;PASSWORD=password;USER ID=username;" providerName="Oracle.ManagedDataAccess.Client" />
-
Yêu cầu ApplicationDbContext của bạn sử dụng Chuỗi kết nối mới của bạn
public ApplicationDbContext() : base("IdentityContext", throwIfV1Schema: false) { }
-
Yêu cầu Identity sử dụng lược đồ và bảng hiện có của bạn. Thêm phương thức này vào bên trong định nghĩa ApplicationDbContext trong IdentityModels.cs:
ghi đèprotected override void OnModelCreating(DbModelBuilder modelBuilder) { base.OnModelCreating(modelBuilder); // MUST go first. modelBuilder.HasDefaultSchema("YOUR_SCHEMA"); // Use uppercase! modelBuilder.Entity<ApplicationUser>().ToTable("AspNetUsers"); modelBuilder.Entity<IdentityRole>().ToTable("AspNetRoles"); modelBuilder.Entity<IdentityUserRole>().ToTable("AspNetUserRoles"); modelBuilder.Entity<IdentityUserClaim>().ToTable("AspNetUserClaims"); modelBuilder.Entity<IdentityUserLogin>().ToTable("AspNetUserLogins"); }
-
Xây dựng lại và thế là xong!
Hãy cho tôi biết nếu nó phù hợp với bạn!