关于 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)
这样的作名录/目录的时候是否有性能损失
这个损失有办法挽救吗?或者需要挽救吗?
// 业务逻辑层会
------解决方案--------------------楼上的,多写几个方法就可以了
不需要多写几个实体类吧?
====
是的,实体类只要一个就可以了,不需要的数据可以不赋给对应的属性嘛
不过方法也没必要写得很细很多,适当最好