2017-08-11 2 views
-1

私はasp MVC Webサイトを構築しています。自分のサイトに認証を使用しているので、デフォルトの認証方法をデフォルトのテンプレートから取得しました。私のアプリケーションのIDアプリケーションdbcontextクラスと私のカスタムdbcontextクラスとの間で完全に混乱しました。これに関する多くの質問があります。Asp.Net Mvc既定のアプリケーションdbcontextクラスを別のフォルダに移動する

1)dbcontextsごとに個別に移行を有効にする必要がありますか?

2)両方のデータベースのデータベースを単一のデータベースにポイントできますか? (私はそれができることを言う答えを見た..)そのために何か問題はありますか?

3)Identitymodel.csクラスをmodelsフォルダから、別のdbcontextが存在するDatabasesという名前のカスタムフォルダに移動できますか?私は名前空間がdbcontext.databasesではなくdbcontext.modelsのままであることが分かりました。

誰かが私に答えてくれますか?私はこれに関連するすべての質問を参照しても疑問を解決できません。

答えて

0

本当に2つのDbContextが必要な場合(私は不思議です)、dbcontextsごとに別々に移行を有効にする必要があります。また、生成する各Configuration.csファイルのフォルダを指定する必要があります。このような何か:限り、彼らは同じテーブルを行う参照しないよう

PM> Enable-Migrations -ContextTypeName ApplicationDbContext -MigrationsDirectory Migrations\ApplicationDbContext 
Checking if the context targets an existing database... 
Code First Migrations enabled for project SomeWebApplication. 

PM> Enable-Migrations -ContextTypeName YourCustomDbContext -MigrationsDirectory Migrations\YourCustomDbContext 
Checking if the context targets an existing database... 
Code First Migrations enabled for project SomeWebApplication. 

あなたのコンテキストが同じデシベルを指して(と彼らは一つの共通の接続文字列を持つことができます)。

はい、IdentityModelを別のフォルダに移動することはできますが、手動で名前空間を変更する必要があります。 (または、ReSharperのを取得し、それが自動的にそれをしない)

+0

」 ) "..私は2 dbcontextsから単一のdbcontextを作ることに慣れていません。それが誤りを投げるかもしれないかどうかを恐れています。 – Abhijith

1

1)いいえ

2)はい、あなたはこれを行うが、あなたは1つのコンテキストでそれを実装することを優れていることができます。 どうすればこのことができますか?あなたの答えはここにある:あなたのcustomアイデンティティPOCOSを作成

ApplicationDbcontext.cs

public class ApplicationDbContext :IdentityDbContext<User, Role, Guid, UserLogin, UserRole, UserClaim> 
{ 
    public ApplicationDbContext() : 
     base("Server=.;Initial Catalog=TestDb;Integrated Security=true;MultipleActiveResultSets=True;") 
    { 
    } 

    public DbSet<Person> Peoples { get; set; } 
    // add poco classes here 
} 

public class User : IdentityUser<Guid, UserLogin, UserRole, UserClaim> 

public class Role : IdentityRole<Guid,UserRole> 

public class UserLogin : IdentityUserLogin<Guid> 

public class UserRole : IdentityUserRole<Guid> 

public class UserClaim : IdentityUserClaim<Guid> 

今あなたが1 DbContextを持っており、削除することができ はApplicationDbcontextのクラス名を作成しますIdentiyMode.cs

exこのコマンドecute:あなたは他のDbContext

IdentityContextを必要としないAdd-Migration initUpdate-Database --verbose

を継承DbContext:あなたが実際には2つのDbContextsを持っている必要があれば(私はなぜ好奇心が強いので

public class IdentityDbContext<TUser, TRole, TKey, TUserLogin, TUserRole, 
      TUserClaim> : DbContext 
+0

まだ私は2つのコンテキストを持っています。私は私のモデルのdbsetsとIdentityDbContextからの私のために作成したものです。 – Abhijith

+0

あなたのコンテキストは 'ApplicationDbContext.cs'に' Dbset 'を定義するだけでよく、' IdentiyModel 'を削除することができます。cs' –

+0

おっと!私はあなたが2つのコンテキストを持っていないと思う.. 1)public class AstroEntities:私のモデルのDbContext 2)publicクラスApplicationDbContext:IdentityDbContext ..私は私が同じフォルダまたは同じ名前空間にそれを追加できるかどうか尋ねていた – Abhijith

関連する問題