我理解,将业务规则放在业务层,将数据访问放在单独的数据访问层是最佳实践,而实体是模型的一部分。
例如,我正在处理模型中定义的一个客户实体,我可以通过数据访问层从数据库中获取所有客户。我也可以添加一个新的客户,通过DAL。
然而,在添加客户之前,我需要对其进行验证--因此我想我需要在业务层中定义规则--但我不太确定如何实现。
我的业务层是否只有接受实体作为参数的方法?比如BLL.Customers.Validate(Model.Customer客户)?
或
我的业务层是否扩展我的实体?我应该让实体类像Customer分部类那样吗?以便BLL可以通过业务规则进一步扩展它们?
我不知道如何设计业务层.
发布于 2011-10-30 17:03:53
您的实体应该真正地携带它们自己的所有业务行为,因此实体本身将有一个验证方法。我还喜欢在实体中使用静态工厂方法来创建实体:
public class Cusotmer
{
private long? _id;
private string _name;
//other attributes...
public static Customer Create(string name)
{
Customer customer = new Customer();
}
public void Validate()
{
if(_name == null)
throw new ValidationException("Name has not been set.");
}
}我不知道为什么需要部分类,除非可能是从数据库生成实体的代码吗?
https://stackoverflow.com/questions/7937022
复制相似问题