【发布时间】:2016-05-23 20:52:36
【问题描述】:
我目前在我的 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 中遇到“不要使用静态类,静态类是邪恶的,等等”类型的 cmets。这适用于这种情况吗?如果是,为什么?我的应用是否应该遵循更好的“结构”以实现最佳实践并避免此类陷阱?
【问题讨论】:
-
静态类没有任何问题,只要它有意义。这个类会需要一个实例吗?它是否需要扩展一个类或被另一个类扩展?但总的来说,随着需求的变化,给自己戴上手铐是没有意义的。
标签: c# asp.net-mvc entity-framework