NBear学习之路1:利用视图创建多表关联的实体

若还不清楚NBear中如何实现ORM,请先阅读Teddy所写的《NBearV3 Step by Step教程——ORM》。

通常在一些应用中所使用到的字段不仅仅来左一个数据表,如一个文章列表GirdView中,使用到了Content、User、Category三个表中的项。
关系图如下:

Content.cs

User.cs

Category.cs


而每个表对应的实体是通过NBear创建的,如果在绑定GirdView时,使用Content[]来做DataSource,再通过强类型来获得Content.User和Content.Category,这样每次都会进行两次查询,如果绑定的列有N条,再绑定一个GirdView的总查询次数将为2N+1。
例如:
1 this.GridView1.DataSource = gateway.GetPageSelector<Content>(Content._.CategoryID == categoryID, orderBy, pageSize).FindPage(pageNo);
2 this.GridView1.DataBind();
在GirdView1中设置编定列,譬如Content.User.Name:
1<%# StrongTyped<Entities.User>(Container.DataItem).User.Name %>
会发现,每次绑定一行时都会进行一次Select查询。分页大小越大,查询的次数则越多。

而通常我们需要使用多数据表中的数据项时,通常都是使用视图的,而NBear强大的支持从视图生成实体的功能,这样,可以轻而易举地解决这类问题,并且将查询次数减到最少。

1.首先,先建立关联三个表项的视图。结合上面的实体定义的SQL视图脚本如下:
SQL视图脚本

2.使用NBear.Tools.DbToEntityDesign.exe工具从数据库中生成实体定义代码:
ContentView.cs

3.使用ContentView[]绑定到GirdView即可一次获取所要的结果。
posted @ 2006-11-22 03:04  MK2  阅读(953)  评论(0编辑  收藏  举报