私はVS 2015 ctpでWebスターターアプリケーションを作成しました。テストを行うためにメモリ内のストアを追加したいと思いますが、データを読み込もうとするとこのメッセージが表示されます
データストア「SqlServerDataStore」「InMemoryDataStore」が利用可能です。コンテキストは、単一のデータストアを使用するようにのみ設定できます。 DbContextクラスのOnConfiguringまたはサービスの設定時にAddDbContextメソッドをオーバーライドしてデータストアを構成します。
2番目のデータストアを作成するにはどうすればよいですか?今度はConfigureService
メソッドにこの行があります
AddEntityFramework(Configuration)
.AddSqlServer()
.AddDbContext<ApplicationDbContext>()
.AddInMemoryStore()
.AddDbContext<WorkModel>( options => { options.UseInMemoryStore(persist: true); });
編集 :シナリオがはっきりしていないように見えます。私はidenty SQL Serverのdbcontextを持って、私はメモリに実行したい、2番目のdbcontextを、完全に区切って追加したいと思います。私はどのように2つの異なるデータストアを使用して、この場合は2つの異なるdbcontextを構成する方法を探しています。
最初のものはIdentity ApplicationDbContextで、もう1つは次のようなものです:
public class WorkModel : DbContext
{
public DbSet<Cliente> Clienti { get; set; }
public DbSet<Commessa> Commesse { get; set; }
protected override void OnModelCreating(ModelBuilder builder) {
builder.Entity<Cliente>().Key(cli => cli.ClienteId);
builder.Entity<Commessa>().Key(cli => cli.CommessaId);
}
}
または、どんなカスタムdbcontextでも好きです
複数のデータストアを持つ1つのDbContext
型を使用することは可能です。ただし、 .AddDbContext()
への呼び出しではうまくいきません。 .ConfigureServices()
完全に画像から.ConfigureServices()
方法の例を次に示します。
class MyContext : DbContext
{
bool _useInMemory;
public MyContext(bool useInMemory)
{
_useInMemory = useInMemory;
}
protected override void OnConfiguring(DbContextOptions options)
{
if (_useInMemory)
{
options.UseInMemoryStore(persist: true);
}
else
{
options.UseSqlServer();
}
}
}
次に、使用するプロバイダを指定するコンテキストをインスタンス化できます。
var inMemoryContext = new MyContext(useInMemory: true);
var sqlServerContext = new MyContext(useInMemory: false);