設定
わかりましたので、オニオンアーキテクチャアプローチに従うアプリケーションがあります。
フロントエンド リファレンス > サービスとドメイン
サービス参照 > ドメインとデータ
データ参照 > ドメイン
ドメイン参照 > なし
私は最新バージョンの EF を使用しており、Unity を IOC としても使用しています。
問題
私のアプリケーションのサービス層は、インターフェイスを介してデータ層の DataContext にアクセスします。
public class TestService : ITestService
{
private readonly IDataContext _context;
public TestService(IDataContext context)
{
_context = context;
}
public BaseResponse SomeServiceCall(BaseRequest request)
{
_context.Database.ExecuteSqlCommand("SELECT * FROM test");
}
}
public class DataContext : DbContext, IDataContext
{
public DataContext() :
base("DefaultConnection")
{
Database.SetInitializer<DataContext>(null);
}
public DataContext(string connection) :
base(connection)
{
Database.SetInitializer<DataContext>(null);
}
public Database Database { get; set; }
Public IDBContext<Test> Tests {get;set;}
}
public interface IDataContext
{
Database Database { get; set; }
IDBContext<Test> Tests {get;set;}
}
ExecuteSQL メソッドにアクセスするには、Database オブジェクトを公開する必要がありました。しかし、これを自分のサービスで実行すると、データベース オブジェクトが null 参照例外を返し、それを初期化する方法がわかりません。どんな助けでも大歓迎です!
ジョシュ