我利用我的ASP.NET应用程序此刻的MVC模式(使用实体框架)的方式ASP.NET MVC的指导方针如下:静态类数据库访问
1)我Models
文件夹包含所有的EF实体,以及我的ViewModels
2)我有一个Helpers
文件夹,我存储为特定应用程序创建的类。
3)在我的Helpers
文件夹中,我有一个名为MyHelper
的静态类,其中包含使用EF访问数据库的方法。
namespace myApp.Helpers
{
public static class MyHelper
{
public static async Task<ProductVM> GetProductAsync(int productId)
{
using (var context = new myEntities())
{
return await context.vwxProducts.Where(x => x.ProductId == productId).Select(x => new ProductVM { A = x.A, B = x.B }).FirstOrDefaultAsync();
}
}
}
}
4)我的控制器,然后调用这些函数在必要时:
namespace myApp.Controllers
{
public class ProductController : Controller
{
[HttpGet]
public async Task<ActionResult> Index(int productId)
{
var productVM = await MyHelper.GetProductAsync(productId);
return View(productVM);
}
}
}
我经常遇到意见的类型,使得“不使用静态类,静态类是邪恶的,等等” 。这是否适用于这种情况?如果是,为什么?有没有更好的“结构”我的应用程序应遵循的最佳实践和避免这种陷阱?
只要它有意义*,静态类没有任何问题。这个课程是否需要一个实例?它是否需要延长课程或延长课程?但总的来说,随着需求的变化,对自己的手腕没有任何意义。 –
你见过[这个SO问题](http://stackoverflow.com/questions/21413726/why-would-i-use-static-methods-for-database-access) – markpsmith