打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
深入研究Petshop基础篇 - 紫风的日志 - 网易博客

深入研究Petshop基础篇

Petshop 2009-04-06 01:12:40 阅读88 评论0   字号: 订阅

上节课,我们基本完成了default.aspx和Products.aspx的页面。从数据角度看,完成了Category数据的加载,上次我们直接从数据库中读出,用的是传统方法,下面我们将深入研究Pethsop的实现机制,并尽量讲究其原因。

1、  首先看看Pethsop中如何实现Category绑定的?

1)在NavigationControl.ascx.cs文件中,

  1. Category category = new Category();
  2. repCategories.DataSource = category.GetCategories();

 

首先是实例化了一个Petshop.BLL.Category类,然后是使用了Category类中GetCategories()方法来形成一个IList的集合,作为绑定的数据源。

2)我们再来看Petshop.BLL.Category类,里面有两个方法,一个是GetCategories()用来实现得到所有Categore所有信息,另一个是GetCategory(string categoryId)用来得到特定Categore信息,所不同的是类型有所不同,一个是IList类型,这种类型是希望隔离数据模型时,系统中没有表、记录的概念,除数据访问层外都以对象做为数据载体来使用,而另一个是CategoryInfo类型,GetCategory(string categoryId)方法主要通过categoryId来得到这个CategoryInfo。需要注意的是,用了下面代码:

  1. // Get an instance of the Category DAL using the DALFactory
  2. // Making this static will cache the DAL instance after the initial load
  3.         private static readonly ICategory dal = PetShop.DALFactory.DataAccess.CreateCategory();

 

用的是DALFactory,这部分主要是反射作用,是通过WebConfig来映射到那类数据库。在这里用到DataAccess类中的CreateCategory()方法。

3)我们再看Petshop.DALFactory.DataAccess类。这个类是通过WebConfig来找到那类数据库。先有一个变量path,path的作用是从WebConfig中读取命名空间PetShop.SQLServerDAL,通过这个定位到PetShop.SQLServerDAL.Category类中。接下来,我们看CreateCategory():

  1. public static PetShop.IDAL.ICategory CreateCategory() {
  2.             string className = path + ".Category";
  3.             return (PetShop.IDAL.ICategory)Assembly.Load(path).CreateInstance(className);
  4.         }

 

使用了Assembly.Loa(path).CreateInstance(className),这里使用的C#的反射,作用是在程序运行时动态创建对象,这里是创建了PetShop.SQLServerDAL.Category对象。

4)我们再看PetShop.SQLServerDAL.Category类。这个类中GetCategories()方法是从PetShop.IDAL. ICategory接口来的,这个方法是从数据库中读取数据,那这个方法哪里用到呢,真正用到是在PetShop.BLL.Category的return dal.GetCategories()。这个函数中,用了一个using,这个用于定义一个范围,在此范围的末尾将释放对象,也就是用DataReader,最后要释放的。再这个函数中SqlHelper类,用来ExecuteReader函数来得到DataReader的值,然后Add到IList<CategoryInfo> categories中。

2、  我们学到了什么?

1)  这里我们学到IList集合作为数据源的方法

2)  学习了反射作用的机理,通过反射我们知道了如何切换到不同数据库的

3)  知道了接口这个东西如何实现的

4)  还知道了using用于语言的作用。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Microsoft PetShop 3.0 设计与实现--数据访问层
未能加载文件或程序集“”或它的某一个依赖项。系统找不到指定的文件
asp.net三层架构详解
用VS2010建立解决方案,用于生成多个Dll的项目 .
C#设计模式之代理模式(三)
JPA 映射双向多对多的关联关系
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服