Entity framework 如何在实体框架中使用存储过程并在mvc4应用程序中使用它

Entity framework 如何在实体框架中使用存储过程并在mvc4应用程序中使用它,entity-framework,asp.net-mvc-4,Entity Framework,Asp.net Mvc 4,我想知道如何在实体框架中使用具有2个输入参数的存储过程,并在MVC4应用程序中逐步使用这些SP,plz不共享硬编码示例 谢谢和问候 Maark将一个参数作为输入的我的存储过程: ALTER procedure [dbo].[uspCopyApplicantForApply] ( @ApplicationId int ) as begin begin tran Declare @UserId int Select @UserId = ApplicantId from

我想知道如何在实体框架中使用具有2个输入参数的存储过程,并在MVC4应用程序中逐步使用这些SP,plz不共享硬编码示例

谢谢和问候
Maark

将一个参数作为输入的我的存储过程:

ALTER procedure [dbo].[uspCopyApplicantForApply]
(
 @ApplicationId int 
)
as
begin 
    begin tran

    Declare @UserId int
    Select @UserId = ApplicantId from PostApplication where Id=@ApplicationId
    ---Copying Applicant Basic Data
    insert into Applicants(UserId,Title,FirstName,LastName,DOB,Phone,Mobile,Languages,MaritalStatus
                            ,MaidenName,Address1,Address2,Address3,Address4,Country,VisaNumber,VisaType
                            ,IssueDate,ExpirtyDate,ValidFrom,VisaCountry,PassportNumber,Img,ApplicationId)
    Select UserId,Title,FirstName,LastName,DOB,Phone,Mobile,Languages,MaritalStatus
                            ,MaidenName,Address1,Address2,Address3,Address4,Country,VisaNumber,VisaType
                            ,IssueDate,ExpirtyDate,ValidFrom,VisaCountry,PassportNumber,Img,@ApplicationId
    from Applicants where UserId=@UserId and ApplicationId is null


    Insert into  Availability(StartTime,EndTime,Frequency,RecurrenceFreq,StartsOn,DoesNotEnd,EndsAfter,EndsAfterValue,EndsBy
                                ,EndsByDate,UserId,ApplicationId)
    select StartTime,EndTime,Frequency,RecurrenceFreq,StartsOn,DoesNotEnd,EndsAfter,EndsAfterValue,EndsBy
                                ,EndsByDate,UserId,@ApplicationId from Availability where  UserId=@UserId and  ApplicationId is null

    Insert into AppExperience(UserId,DateFrom,Title,DateTo,Employer,[Address],ApplicationId)
    select UserId,DateFrom,Title,DateTo,Employer,[Address],@ApplicationId 
    from AppExperience where   UserId=@UserId and  ApplicationId is null

    Insert into Competency(UserId,Title,StartDate,EndDate,ExpiryDate,Marks,Result,Notes,ApplicationId)
    select UserId,Title,StartDate,EndDate,ExpiryDate,Marks,Result,Notes,@ApplicationId
    from Competency where   UserId=@UserId and  ApplicationId is null

    Insert into [Resume](UserId,Title,[Path],IsDefault,UploadedAt,ApplicationId)
    select UserId,Title,[Path],IsDefault,UploadedAt,@ApplicationId 
    from [Resume] where   UserId=@UserId and  ApplicationId is null

    commit tran
    select 'Done'
end 
使用实体框架从C调用它:

InvovaDbContext db = new InvovaDbContext();

List<string> str = db.Database.SqlQuery<string>("exec uspCopyApplicantForApply {0}", postApplication.Id).ToList();
这可能会帮助你

使用ExecuteStoreQuery函数调用存储过程

ExecuteStoreQuery应用于查询数据。此方法仅在T具有默认构造函数且属性名与返回的列名相同时有效。T可以是任何泛型类或任何数据类型,并且它可能不是EF生成的实体的一部分

以下是使用ExecuteStoreQuery方法从存储过程检索数据的过程

方法T可以是任何东西,它可以是EF生成的实体,也可以是自定义实体,因此首先我要创建一个自定义实体EmployeeDetail。此处,EmployeeDetail属性名称必须与存储过程的select语句的返回列相同

//创建自定义类以保存存储过程的结果

public class EmployeeDetail
{
    public int EmployeeID { get; set; }
    public string EmployeeName { get; set; }
    public string DepartmentName { get; set; }
}

// using Object Context (EF4.0)
var parameters = new SqlParameter[4] ;
            parameters[0] = new SqlParameter { ParameterName = "autoIds", Value = autoIds };
            parameters[1] = new SqlParameter { ParameterName = "inventoryType", Value = inventoryType };
            parameters[2] = new SqlParameter { ParameterName = "orderBy", Value = orderByStr };
            parameters[3] = new SqlParameter { ParameterName = "SqlString", Value = SQLString };


using (Entities context = new Entities())
{

        IEnumerable<EmployeeDetails> empDetails  =  context.ExecuteStoreQuery<EmployeeDetails>    
                                                                                            ("exec GetEmployeeData @autoIds, @inventoryType, @orderBy, @SqlString", parameters).ToList();
}

// using DBContext (EF 4.1 and above)
using (Entities context = new Entities())
{
        IEnumerable<EmployeeDetails> empDetails  =  context. Database.SqlQuery
                                                                      < EmployeeDetails >("exec GetEmployeeData ", null).ToList();
}
这可能对你有帮助

    DataSet dsDashboardInfoCompanyAdmin = new DataSet();
    #region Get TotalConnections(broken down by devices), TotalContracts, Total Connections(at last week) - for company admin

    SqlHelper helper = new SqlHelper();
    helper.OpenConnection();
    ArrayList sqlParameter = new ArrayList();
    sqlParameter.Add(new SqlParameter("@TenantID", TenantID));
    sqlParameter.Add(new SqlParameter("@CompanyID", CompanyID));
    dsDashboardInfoCompanyAdmin = helper.ExecuteDataSet("proc_DashboardInfoCompanyAdmin", sqlParameter);

    #endregion

嗨,你好,谢谢你的回复,你能给我一个循序渐进的过程吗?因为我是asp.net mvc的新手,提前谢谢。它完成了我看到的内容,你有dbcontext类??嗨,实际上我想要一个完整的循序渐进的过程,从导入存储过程到在模型控制器中编写相关代码,并查看我是mvc的新手