我使用 MVC3 和 C#,NHibernate 作为 ORM 和 StructureMap 作为 IoC 容器
也许我的术语是,但我会尝试一个简单的例子
假设我有一个域对象:
class Product
{
decimal Price;
}
假设我们允许某些促销活动,我现在需要 2 个功能:
GetAllDiscountedProducts() //列出所有打折的产品 IsDiscounted(Product p) //检查给定的产品是否可以打折
确定产品是否打折的商业规则是它的价格是否高于某个价值,假设任何高于 50 美元的东西都是可打折的
由于我使用 NHibernate 进行数据访问,因此我倾向于使用 QueryOver 语法,因此 GetAllDiscountedProducts 可以是:
//GetAllDiscountedProducts()
session.QueryOver<Product>().(p => p.Price > 50.00)
但是当我对业务规则使用特定于数据访问的查询时,我将不得不复制 IsDiscounted 的逻辑
bool IsDiscounted(Product p)
{
return p.Price>50;
}
有没有办法集中业务逻辑?