sql >> データベース >  >> RDS >> Oracle

ASP.NETMVC5-ユーザーをOracleデータベースに保持する

    これは少し遅れて届くかもしれませんが、他の誰かが同じ問題に遭遇した場合に備えて残しておきます。それで、私はついにIdentity2.0とOracleを連携させることができました。次の手順は、デフォルトのIdentityUserに変更を加えたくない場合(たとえば、intやlongの代わりにchar IDを使用しても問題がない場合)、既存のOracleスキーマのテーブルだけが必要な場合に機能します。

    1. OracleでIDテーブルを作成します。必要に応じてテーブル名を変更できます。Identityがテーブルを操作するために必要な列を含めるようにしてください。アプリケーションに必要な列を追加することもできます(スクリプトは元々 Devart 、URLが壊れた場合に備えて要点にコピーしました):

      要旨こちら

    2. EDMXファイルを使用している場合は、新しい接続文字列を追加する必要があります。これにより、自動的に生成される接続文字列が機能しなくなります。標準の接続文字列が必要です。このテンプレートに従ってみてください:

      <add name="IdentityContext" connectionString="Data Source=localhost:1521/xe;PASSWORD=password;USER ID=username;" providerName="Oracle.ManagedDataAccess.Client" />

    3. ApplicationDbContextに新しいconnectionStringを使用するように指示します

      public ApplicationDbContext()
          : base("IdentityContext", throwIfV1Schema: false)
      {
      }
      
    4. 既存のスキーマとテーブルを使用するように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");
      }
      
    5. 再構築してそれだけです!

    それがあなたのために働くかどうか私に知らせてください!



    1. 日付とSUM値によるDjangoグループ

    2. SQL ServerのCONVERT()で使用可能な日付形式のリスト

    3. 条件間にORがある場合、MySQLはインデックスを使用できますか?

    4. ON DUPLICATE KEY UPDATE の説明が必要な SQL クエリ