日期:2014-05-20  浏览次数:20414 次

关于 PetShop 4.0 的设计思想
PetShop   4.0   项目中实体类(Model项目)通常对应数据库中的一个表,然后数据访问层(IDAL/SQLServerDAL等项目)解决实体类与数据库的相互作用,业务逻辑层解决业务与实体类的相互作用,例如:

---------------------------------------
//   数据库中定义产品表:
Table   Product

//   Model中定义实体类:
class   ProductInfo
{
    //   其属性基本对应数据库产品表
}
   
//   数据访问层SqlServerDAL定义了:
class   Product
{
    //   以实体类ProductInfo作为输入或者输出,将数据库操作封装在class里面
}

//   业务逻辑层BLL定义了:
class   Product
{
    //   以实体类ProductInfo作为输入或者输出,处理业务逻辑
    //   通过数据访问层处理数据库,实现与数据库隔离
}
-------------------------------

以上的结构是很清晰,但实际应用中我遇到下面的问题,也举例说明:
//   表现层有时候需要产品名录/目录/详细列表
//   其区别在于:
//   名录:仅需要获取产品名
//   目录:仅需要几个字段
//   详细列表:需要实体所有信息

按我对数据库的了解,仅Select需要的字段可以获取更高的效率
但现在表现层都仅与业务逻辑层交互,其输入输出都是实体类ProductInfo

//   具体情形是:
//   表现层访问:
//   IList <ProductInfo>   PetShop.BLL.Product.GetProductsByCategory(string   category)
//   业务逻辑层访问:
//   IList <ProductInfo>   PetShop.SqlServerDAL.Product.GetProductsByCategory(string   category)

这样的作名录/目录的时候是否有性能损失
这个损失有办法挽救吗?或者需要挽救吗?

//   业务逻辑层会

------解决方案--------------------
楼上的,多写几个方法就可以了
不需要多写几个实体类吧?
====
是的,实体类只要一个就可以了,不需要的数据可以不赋给对应的属性嘛
不过方法也没必要写得很细很多,适当最好