私は、Entity Framework 5(edmxを使用)を使用してasp.netmvc4で作業しています。Ninjectを正しく機能させようとしていますが、バインディングを使用するとかなり混乱します。以前にNinjectが使用されているのを見たことがありますが、それはDIがWCFレイヤーに設定されていたWCFプロジェクトでした。
現在、4つのレイヤーがあります。
- DataAcces(edmxとリポジトリが含まれています。これについては後で説明します)
- BusinessLogic(標準BL)
- 共通(モデル)
- Gui(mvc4プロジェクト)
ここで注意が必要な部分があります。ここでDIを使用したいと思います。以前のWCFプロジェクトで使用されているのを見たのは、WCFレイヤーがDataAccessに移動して、kernel.bindを使用できるようにすることでした。
今、私はここでそれを望んでいません。私はWCFを使用していません。また、GUIでDataAccessを呼び出したくありません。
私が洞察のためにいくつかのコードを示すと言ったので:
DataAccessのリポジトリ
public class Repo: IRepo
{
Entities context = new Entities();
public IQueryable<PictureSource> PictureSource
{
get { return context.PictureSource; }
}
}
私のIRepositoryはこれだけです:
public interface IRepository
{
IQueryable<PictureSource> PictureSource { get; }
}
私がやりたいのは、ビジネスロジックです。私は次のことができるようになりたいです:
public List<Picture> GetStuff(IRepository Repo)
{
//code
}
今、私はインターネットでたくさん見ました。例の約80%は、私には役に立たないWebApimを使用しています。他の20%は、「単なるデモであるため」、Gui-BL-DAの原則に違反しているため、やりたいことを何でもしているようです。データアクセスでビジネスロジックを実行する例に対する単一のレイヤーで構成される例を見てきました。ninject wikiも、私がDIを初めて使用し、既存のアプリケーションで使用されているのを見ただけなので、役に立ちませんでした。