我正在使用 Entity Framework 5(使用 edmx)在 asp.net mvc 4 中工作。我试图让 Ninject 正常工作,但使用绑定让我很困惑。我以前见过 Ninject,但那是在 WCF 项目中,DI 被设置在 WCF 层中。
现在我有4层:
- DataAcces(包含 edmx 和存储库,我稍后会展示)
- 业务逻辑(标准 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; }
}
我想要做的是在我的 BusinessLogic 中。我希望能够做到以下几点:
public List<Picture> GetStuff(IRepository Repo)
{
//code
}
现在我在网上看了很多。大约 80% 的示例使用 Web Apim,这对我来说毫无用处。其他 20% 似乎只是“因为它只是一个演示”而为所欲为,并且违反了 Gui-BL-DA 原则。我已经看到了由单层组成的示例,以及在数据访问中执行业务逻辑的示例。ninject wiki 也没有帮助我,因为我是 DI 新手,而且我只看到它在现有应用程序中使用。