当前位置导航:炫浪网>>网络学院>>网页制作>>ASP.NET教程

LINQ下使用三层架构的数据统计以及一个主从报表

欢迎进入.NET社区论坛,与200万技术人员互动交流 >>进入

    以前,我们要在某个报表中显示统计信息一般有两种方法:1通过一个SQL查询——我们可以向数据库发出一个额外的查询来为某个特定的类别计算统计信息。SQL包含一系列的聚合函数,并由GROUP BY子句指定应该根据什么数据来进行统计。2在表示层中统计已经获取的信息,大家可以参考这个http://reeezak.cnblogs.com/archive/2006/07/09/446444.html.

    然而这两个方法都有他们的缺点:

    第一种方法很明显,他增加了一次到数据库的往返,因为在获取报表信息的时候我们已经对数据库进行了一次访问,而我们要获得的统计信息可以从报表中获取。而且无法获取更加复杂的业务统计。

    第二种方法则没有很好的让层次划分出来,我们更加希望表示层中仅仅使用方法而不要去设计这些方法。(尤其是一些业务规则,比如NBA中有“球员效率”这项数据,但如果不是很熟悉这项业务的程序员是不知道这个效率是如何计算的。)

    既然我们使用了分层架构,就应该把这些职能分开,表示层的设计者只需要设计UI,了解方法的名称就可以了。具体的业务计算应该留下来给业务逻辑层的设计者去设计。

    有了LINQ我们就可以把这些东西都放到业务层去了,因为数据操作已经对象化,在逻辑层中就可以方便地统计数据并且直接在表示层调用这样的方法。

    按部就班的做

    1我们需要一个下来列表来选择门类,所以我们需要一个门类列表,在Productbll中添加一个新的方法GetCategory代码如下:

 [System.ComponentModel.DataObjectMethodAttribute(System.ComponentModel.DataObjectMethodType.Select, true)]

    public IQueryable GetCategory()

    {

        var category = from p in db.Categories

                      select p;

        return category;

}

    2.代码很简单我就不解释了,由于我们的重点不是这个门类选择列表,所以我直接选择了全部字段,其实只要ID和Name两个字段就可以了。新建一个WEB窗体,添加一个下拉列表,在自动回送上打勾,选择新建数据源。

    3.数据源选择对象数据源,选择Productbll,方法选择GetCategory,点击完成。字段显示填写CategoryName,字段值填写CategoryID。

相关内容
赞助商链接