我了解最佳做法是将业务规则放在业务层,将数据访问放在单独的数据访问层中,而实体则是模型的一部分。
例如,我正在使用我的模型中定义的Customer实体,我可以通过数据访问层从数据库中获取所有客户。我也可以通过DAL添加新客户。
然而,在我添加客户之前,我需要对其进行验证 - 所以我想我需要在业务层中定义规则 - 但我不太清楚如何去做。
我的业务层是否只有接受实体的方法 参数?像BLL.Customers.Validate(Model.Customer 客户)?
或者
我的业务层是否扩展了我的实体?我应该成为实体吗? 像Customer部分类这样的类?这样BLL可以扩展它们 还有业务规则吗?
我不确定如何设计业务层。
答案 0 :(得分:0)
您的实体应该真正拥有自己的所有业务行为,因此实体本身会有一个Validate方法。我还想在我的实体中使用静态工厂方法来创建实体:
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.");
}
}
我不确定为什么你需要部分类,除非你是从数据库生成实体的代码呢?