从web项目中删除dal引用

时间:2015-08-08 14:57:11

标签: c# asp.net

我有一个3层应用程序,层是:
    Web:表示层(ASP.NET MVC) - >想只看服务层     BLL:服务层 - >只能看到DAL     DAL:数据访问层 - >抱着我的Edmx
    我使用工作单元和存储库如下:

    public interface IUnitOfWo
            {
                IGenericRepo<Actor,ActorDto> ActorRepo{ get; }
                void Save();
            }

这里是IUnitOfWork的实现

    public IGenericRepo<Actor, ActorDto> ActorRepo
                {
                    get { return actorRepo ??(actorRepo = new GenericRepo<NtierMvcAppEntities, Actor, ActorDto>()); }
                }

和WebApp我想在不使用DAL的情况下获取这样的数据:

     private IUnitOfWo _unitOfWork;

                public TestController(IUnitOfWo unitOfWork)
                {
                    _unitOfWork = unitOfWork;
                }
                       public ActionResult Index()
                {
                    // get all models
                    List<ActorDto> modelList = _unitOfWork.ActorRepo.GetAll();

                    //  this line wont work without have reference of DAL.dll
                    return View(modelList);
                }

1 个答案:

答案 0 :(得分:1)

您是否有理由想要从表示层隐藏您的域模型以及DAL?

除非你有充分的理由,否则你最好保持简单并暴露它。您仍然可以使用视图模型来避免在视图中使用EF实体(并通过仅将所需属性投影到视图模型中来提高查询效率)

而且我不知道为什么每个人都想要实现自己的工作单元和存储库。 EF上下文已经是一个工作单元和一个存储库!