これは少し遅れて届くかもしれませんが、他の誰かが同じ問題に遭遇した場合に備えて残しておきます。それで、私はついにIdentity2.0とOracleを連携させることができました。次の手順は、デフォルトのIdentityUserに変更を加えたくない場合(たとえば、intやlongの代わりにchar IDを使用しても問題がない場合)、既存のOracleスキーマのテーブルだけが必要な場合に機能します。
-
OracleでIDテーブルを作成します。必要に応じてテーブル名を変更できます。Identityがテーブルを操作するために必要な列を含めるようにしてください。アプリケーションに必要な列を追加することもできます(スクリプトは元々 Devart 、URLが壊れた場合に備えて要点にコピーしました):
要旨
こちら -
EDMXファイルを使用している場合は、新しい接続文字列を追加する必要があります。これにより、自動的に生成される接続文字列が機能しなくなります。標準の接続文字列が必要です。このテンプレートに従ってみてください:
<add name="IdentityContext" connectionString="Data Source=localhost:1521/xe;PASSWORD=password;USER ID=username;" providerName="Oracle.ManagedDataAccess.Client" />
-
ApplicationDbContextに新しいconnectionStringを使用するように指示します
public ApplicationDbContext() : base("IdentityContext", throwIfV1Schema: false) { }
-
既存のスキーマとテーブルを使用するようにIdentityに指示します。 IdentityModels.csにあるApplicationDbContext定義内にこのメソッドを追加します:
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"); }
-
再構築してそれだけです!
それがあなたのために働くかどうか私に知らせてください!