Entity framework 如何在实体框架中使用存储过程并在mvc4应用程序中使用它
我想知道如何在实体框架中使用具有2个输入参数的存储过程,并在MVC4应用程序中逐步使用这些SP,plz不共享硬编码示例 谢谢和问候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
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的新手