たとえば、次の DbContext クラスがあります。
public class AppDbContext : DbContext {
...
}
public class LogDbContext : DbContext {
...
}
public class FooDbContext : DbContext {
...
}
という名前の接続文字列AppDbContext
が にあり、App.Config
他の DbContext クラスに と同じ接続文字列を共有させたい場合、とAppDbContext
のパラメータとして文字列「AppDbContext」を渡すだけでよいでしょうか。例えば、ctor
LogDbContext
FooDbContext
public class FooDbContext : DbContext {
public FooDbContext : base("AppDbContext") { }
}
副作用はありますか?
2013/1/9 更新
@ShinH2Sの提案と何かを試した後、私はこの方法をあきらめ、異なる接続文字列とデータベースを持つ異なるDbcontext派生クラスを与えることにしました。テスト プロジェクトを試して GitHub に配置しました。と のスキーマが異なるためAppDbContext
にデータベース スキームが変更されたことをエンティティ フレームワークが検出すると、実行時例外がスローされます。FooDbContext
両方の DbContext 派生クラスに戦略を割り当てるDropCreateDatabaseIfModelChanges
と、モデルが別のクラスと異なるため、そのうちの 1 つが削除されます。
2017年10月更新
これは古い問題です。私の記憶でEF6 and above versions
は、同じ移行テーブル内の複数のコンテキストに対して異なる移行履歴を持つことができます。私は SO でこの答えを好みます。私は約 2 年間、C# でコーディングしていませんでした。