0

ベースのASPコンテキストではなく、独自の外部SQLデータベースを使用して、owin認証を作成したいとします。私はデータベースからedmxモデルを作成することができますが、私はどのようにユーザーを識別するためにそれを使用するのかわかりません。独自のdbcontextを使用した認証の作成

ApplicationUserで使用されるベースのデータベース接続を自分のものに変更すると、この例外が発生します。

私はすでに私はGoogleで見つけた解決策をテストするには、少なくとも30件のプロジェクトを作成しているが、それらのどれも私のために働いていません。

+0

私はそれがSQLの問題ではないと思います。マルチスレッドのもの –

+0

データベースにApplicationUserテーブルがありますか?独自のDbContextはIdentityDbContextから継承していますか? – kloarubeek

+3

回答を追加していただきありがとうございます。以前のバージョンにロールバックし、回答ボックスを使って回答を投稿しますか?ありがとう。 – halfer

答えて

0

[SOLUTION]

ソリューション..私はthougthよりもはるかに簡単です

私は(AspNetUserは自分のテーブルである)

IdentityUserから私のUserテーブルを継承してしなければならなかったすべて
public partial class AspNetUser : IdentityUser 

、IdentityModels.csのDefaultConnectionの代わりに私のカスタム接続文字列名(BCTSDb)を使用してください。

public ApplicationDbContext() 
     : base("BCTSDb", throwIfV1Schema: false) 

これはデータベースのコードファーストであり、データベースはまずこの解決策では動作しません(理由はわかりません)。

これは、FIRSTの問題を解決しました。この後、私はキーとあいまいな参照がないため、ビューを持つコントローラを足場に取り付けることができませんでした。

[WHATTODO]

1.あいまいな参照私のAspNetUser.csクラスで

私はすべてのORIGINAL属性は上書き作っ例:ユーザ名の を:

public override string UserName { get; set; } 

これは必要ではない可能性がある、私はこれがなければ試していない、おそらくこれは私のdbcontextとApplicationDbContextのあいまいな参照を解決してください。

2.欠落しているキー

私は私のキーを左が、溶液があるところを知らない:

私OnModelCreating機能の終わりに(私のdbcontextでは)私は、次の行を書きました:

protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
     // your table operations, references 
     // ... 

     modelBuilder.Entity<IdentityUserLogin>().HasKey<string>(l => l.UserId); 
     modelBuilder.Entity<IdentityRole>().HasKey<string>(r => r.Id); 
     modelBuilder.Entity<IdentityUserRole>().HasKey(r => new { r.RoleId, r.UserId }); 

     base.OnModelCreating(modelBuilder); 
    } 

これ以降、私は何かしたいことができます。

関連する問題