我正在构建一个 MVC3 应用程序,并且我正在为我的 DAL 使用 Linq to sql。我的 DAL 称为 MyDataReader 并处理创建/初始化数据上下文,此外它还定义了从数据库中检索数据的所有方法。所有的方法都是实例方法,所以为了调用这些方法,我需要实例化一个 MyDataReader 对象。
我的问题是:在我的 DAL 中调用方法的最佳方法是什么。最初,每当我需要调用 DAL 方法时,我都会从控制器中实例化一个 MyDataReader 对象。然后我意识到每次实例化 MyDataReader 对象时,都会创建 datacontext 对象并建立连接。
在我的第二种方法中,我在 Global.asax 文件中创建了一个静态参数,如下所示:
public class MvcApplication : System.Web.HttpApplication
{
public static MyDataReader reader;
protected void Application_Start()
{
reader = new MyDataReader();
AreaRegistration.RegisterAllAreas();
RegisterGlobalFilters(GlobalFilters.Filters);
RegisterRoutes(RouteTable.Routes);
}
}
这将数据库初始化操作限制在最低限度。我可以通过以下方式从我的所有控制器中调用 DAL 方法:
MvcApplication.reader.CallTheMethod()
这是一个好方法吗?调用 DAL 方法的最佳方法是什么?