2016-06-26 8 views
2

"Update-Database"を実行しようとすると、次のエラーが表示されます。Entity Frameworkで注入されたパラメータを持つカスタムコンストラクタを使用してDbContextを作成する

The target context 'AllMid.DL.Repository.Implementation.AllMidContext' is not constructible. 
Add a default constructor or provide an implementation of IDbContextFactory. 

今では、問題は、私はデフォルトコンストラクタまたはIDbContextFactoryインタフェースの実装を持っていないことであることを私には明らかであるが、サンプルプロジェクトで私は、これはどちらかなしで行わ見ています使用しています。誰もこれについてどうやって行くのか知っていますか?

私は現在、これに似たDbContextを持っています。

internal class AllMidContext : DbContext, IAllMidContext 
{ 
    public DbSet<TreeEntity> Tree { get; set; } 

    public AllMidContext(IConfigurationAccess configAccess) : base(configAccess.GetDefaultConnectionString()) 
    { 
    } 
} 

configAccessは構造マップによって注入されている必要があります。

この

internal class DataContextAccess : IDataContextAccess 
    { 
     private readonly IConfigurationAccess _configAccess; 

     public DataContextAccess(IConfigurationAccess configAccess) 
     { 
      _configAccess = configAccess; 
     } 

     public IAllMidContext GetAllMidContext() 
     { 
      return new AllMidContext(_configAccess); 
     } 
    } 

ようDataContextAccessクラスは今の質問はデフォルトコンストラクタや工場せずにこれを行う方法はありますか?私の依存関係注入は常にパラメータを入力するので、私は自分のカスタムコンストラクタを使用するためにEFを取得できますか?

+1

私は、デフォルトのコンストラクタを作成するよりも、注入された依存関係を持つ顧客コンストラクタを使用することにもっと興味があります。 – MProgrammer

答えて

0

私はupdate-databaseが入力のないコンストラクタを探していると思います。あなたができることは、入力のないコンストラクタを記述し、その本体にあなたの注入を行うことです。

関連する問題