实体框架 - 关于业务层需求的意见

时间:2011-08-12 11:10:49

标签: c# asp.net entity-framework specification-pattern

目前我的网站上有一个存储库模式,其中包含规范模式。我只需几行代码即可从我的.aspx页面中获取数据,例如:

private IRepository repository;

    protected void Page_Load(object sender, EventArgs e)
    {
        repository = new GenericRepository();

        Specification<Book> specification = new Specification<Book>(b => b.Year == 1988);
        lvBooks.DataSource = repository.GetAll<Book>(specification);
        lvBooks.DataBind();
    }

现在我的问题是,我的网站是否需要业务层?如果您的答案是肯定的,为什么? 目前看来,由于规范模式,我不需要在页面和存储库之间的业务层。

感谢您的意见。

2 个答案:

答案 0 :(得分:3)

答案取决于这个应用程序有多大,它有多大,以及它可能会有多大变化。

任何层的唯一真正意义就是隔离功能。在一个小应用程序中,您可以愉快地在整个UI代码中调用存储库。

但是,如果您随后以存储库结构的方式更改某些内容会怎么样?您需要查找并更改所有这些参考文献。

但是,如果您在业务层中编写了所有存储库访问代码,并向UI公开了更高级别的方法,那么此时您的工作要少得多。

可能存在特定的安全考虑因素。例如,如果您的UI无权访问存储库,那么您可以将所有安全检查集中在业务层的公共API上。如果你有一个200页的网络应用程序,可以从任何地方访问存储库 - 当然它可能是安全的 - 但你有多确定?

然后是单元测试......基本上没有正确的方法 - 但是如果你的应用程序很小你很好......如果你的应用程序很大,你可能会在某个时候后悔这个设计

答案 1 :(得分:1)

从您的代码中看来,您似乎不需要业务层。因为看起来所有关于使用简单规范或数据插入的数据获取。当你有关于这些对象的一些业务规则时,BL将是必需的,例如:删除对象应该在删除对象之前检查某些特定条件等