我有一个ASP.NET MVC应用程序,正在寻找提高可读性,测试等的方法。目前,很多业务逻辑都在控制器中,我想把它移到另一个位置。
以下是我一直在使用的一个想法:实体框架为我创建实体类(例如Product,Customer)。为什么不创建部分类来存储业务逻辑?这是一个例子:
public partial class Product()
{
public static List<Product> GetGreenProducts()
{
using(MyEntities db = new MyEntities())
{
return db.Product.where(p => p.Color == "green").ToList();
}
}
}
然后,在控制器中,我可以这样做:
public class ProductController : Controller
{
public ActionResult GreenProducts()
{
return View(Product.GetGreenProducts());
}
}
这种方法似乎1)非常简单2)非常干净3)可以轻松进行单元测试。
我认为这是一个相关的模式。任何人都可以发现这个或其他想法的任何问题吗?
答案 0 :(得分:1)
这里有两个问题:
简单。因为业务逻辑不应该耦合到EF,而不应该耦合到控制器。
UpdateLastModified
它属于EF还是单独的服务? UpdateLastModified
已经远远超过了一个例子。您不应该创建更新实体列的方法。您还需要UpdateCreatedBy
,UpdateName
,UpdateId
吗?我当然希望不是。 EF为您提供执行此类琐碎任务所需的所有工具。
ProductService
应关注中间层问题,无论它们是什么。投影ProductEntity
- &gt;等事情ProductDao
你有什么。 <{1}}不应该存在。