独自のIdentityDbContextの実装があるので、ユーザーの選択に応じてカスタムデータベースに接続できるようにしたいと考えています。だから私は、デフォルトのデータベースとユーザーが選択したデータベースの両方に対して2つのコンストラクタを作成しました。可変接続文字列を使用してIdentityDbContextを作成する方法は?
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
public ApplicationDbContext()
: base("Users", throwIfV1Schema: false)
{
//Aici am adaugat
Configuration.ProxyCreationEnabled = true;
Configuration.LazyLoadingEnabled = true;
}
public ApplicationDbContext(String connectionName)
: base(connectionName, throwIfV1Schema: false)
{
//Aici am adaugat
Configuration.ProxyCreationEnabled = true;
Configuration.LazyLoadingEnabled = true;
}
}
私の問題は、カスタムconnectionName
をクラスに持ち込む方法です。
コンストラクタは、この方法で呼び出されます。この文脈でHttpContext.Current
がnullであるため、セッション変数を使用して
public static string conn;
public static ApplicationDbContext Create()
{
if(conn == null)
return new ApplicationDbContext();
else
return new ApplicationDbContext(conn);
}
は不可能です。 Create
メソッドに文字列引数をStartup
クラスの権利は、すべてのユーザーの選択の前に、Owinは、デフォルトのデータベースを使用することに決定したので、また不可能です追加:
app.CreatePerOwinContext(() => ApplicationDbContext.Create());
それはwouldnので、そこに助けないだろうでも引数を渡しますユーザーによって選択されました。
は、私はそれについて何ができますか?
ありがとうございました!
ユーザーが選択したことは何を意味していますか?他のユーザーがIdentityインスタンスに対して認証するサイトの管理者を意味しますか?そうでなければ、接続を選択した後に起こる認証後にユーザーが誰かを知ることができないので、どのように可能であるかはわかりません。あなたが実際にこれを行うことによって達成しようとしていたことを説明することができれば、より多くのことを助けるでしょう。 – Igor
あなたは何を意味するのか正確にはわかりませんが、@Igorが持っているのと同じ質問がありますが、おそらくこれが助けになるでしょうhttp://stackoverflow.com/questions/18297052/asp-net-identity-how-to-set- target-db – Jack1987
Owinの設定でRequestごとに1つのApplicationDbContextがあるため、これは機能しません。 –