我必须为我当前的项目开发WEB API
。我的数据库是POSTGRESQL
,我没有使用Entity Framework
。我有自己的数据访问层。现在,我想要访问数据库的每个控制器的每个(GET
,PUT
,POST
,DELETE
等)方法。现在我的问题是实例化数据访问层对象的正确方法是什么。以下两种方法: -
这样做的正确方法是什么?
我将非常感激。
答案 0 :(得分:2)
此问题的正确答案在很大程度上取决于您如何实施数据访问层。话虽如此,肯定可以给你一些可能帮助你的一般指示。在C#中创建单个对象通常不是特别昂贵的操作,而是附加到那些往往很昂贵的对象的资源。由于postgresql C#提供程序支持连接池(我假设您使用的是the npgsql driver?),因此每次实例化一个数据访问对象时都不会创建与数据库的新连接,而是将连接保存在一个池,并根据您的代码分配。因此,为了避免复杂性和状态处理,最简单的方法可能是在控制器的每个方法中创建一个新对象。
或者,您可以将数据访问对象作为私有字段添加到控制器,并在控制器的构造函数中实例化它,假设您的所有控制器方法都需要您的数据访问层。这可能有助于避免一些代码重复,并且在两种情况下对象的生命周期都非常相似,即每个请求一个对象。