2019/02/02

EF マイグレーション時にエラーが出て、DBの構造を更新できない

The target context 'コンテキスト名' is not constructible. Add a default constructor or provide an implementation of IDbContextFactory.

特にカスタマイズしていなければ、DbContext を継承した Context クラスには、引数無しコンストラクターの base クラスで接続文字列をセットしているはずです。
public HogeContext() : base("Con")
{
}
こんな感じ。

私は引数有りのコンストラクターで、接続文字列を場合分けしており、引数無しのコンストラクターは用意していませんでした。
public HogeContext(string KEY) : base("Con")
{
 // 接続文字列を工夫して変更させている
 var con = Database.Connection.ConnectionString;
 Database.Connection.ConnectionString = string.Format(con, KEY);
}
これだと、マイグレーション時に冒頭のエラーが出ます。

Context 周りにもう少し柔軟性が欲しかったね。
Related Posts Plugin for WordPress, Blogger...