如何使用 EDMX 及其创建的函数来调用存储的过程

本文关键字:函数 存储 过程 调用 创建 何使用 EDMX | 更新日期: 2023-09-27 18:35:27

我在DAL中有edmx,它为所有存储的过程自动创建了函数和复杂类型。我能够使用实体对象调用存储的过程。

现在,在业务逻辑层中,我正在类级别为 DAL 创建一个对象。即

public class ProjectBO   //Business object
    {
       ProjectEntities Entities = new ProjectEntities();

       public IEnumerable<usp_Project_Team_GetTeam_Result> usp_Project_Team_GetTeam(string strAssociateId)
       {
           return Entities.usp_Project_Team_GetTeam(strAssociateId);
       }
}

我从处理程序调用此函数。所以我的问题是,由于我已经在类级别为实体创建了对象,因此是否会在创建对象后立即打开连接并始终保持打开状态?是否有任何等效的命令,例如connection.close()在不需要打开连接时关闭连接?!还是 EDMX 会在从数据库获取数据后立即打开和关闭连接???

如何使用 EDMX 及其创建的函数来调用存储的过程

您的实体变量位于 ProjectBO 实例的范围内。因此,当您的垃圾回收器运行时,您的数据库连接将被清理。不理想。

更好的选择是明确地为其提供更窄的范围:

public IEnumerable<usp_Project_Team_GetTeam_Result> usp_Project_Team_GetTeam(string strAssociateId)
{
   using (ProjectEntities Entities = new ProjectEntities())
   {
       return Entities.usp_Project_Team_GetTeam(strAssociateId);
   }
}

这样,您的连接将完全按照您的期望打开和关闭。