如何解决如何使用参数调用 firstordefault 方法从实体框架核心调用存储过程中检索值
我正在从 .Net WebApi 转换为 .Net Core API。
我希望来自过程调用实体框架核心的第一个值调用 FirstOrDefault()
下面是我的过程代码:
CREATE procedure sp_employee
@DelReqId int
AS
Begin
Select isnull(ApproverCode,'') ApproverCode from employee where Del_ReqId=@DelReqId
End
C# 代码:
public string GetApproverId(int ReqId)
{
string result = "";
//int result = ctx.CDS_CheckForSaveAfterValidationFalse(Appid,RoleId);
var ReqIdParam = new sqlParameter("@DelReqId",ReqId);
result = db.Database.ExecutesqlRaw("exec LMS.CDS_GetApproverSAPIDOnReqId @DelReqId",ReqIdParam).ToString();
return result;
}
我需要用 ToStiring()
替换 FirstOrDefault()
。
提前致谢。
解决方法
如果需要从 DB 获取一些结果,则不能使用 db.Database.ExecuteSqlRaw。
您必须为 sp 结果创建一个特殊的类
public class ApproverSpResult
{
public string ApproverCode {get; set;}
}
然后将这个类添加到dbcontext
public virtual DbSet<ApproverSpResult> ApproverSpResults { get; set; }
//and OnModelCreating
modelBuilder.Entity<ApproverSpResult>(e =>
{
e.HasNoKey();
});
只有在此之后,您才能从 SP 获得结果
public string GetApproverCode(int ReqId)
{
var ReqIdParam = new SqlParameter("@DelReqId",ReqId);
var approverSpResult= db.ApproverSpResults.ExecuteSqlRaw("exec
LMS.CDS_GetApproverSAPIDOnReqId @DelReqId",ReqIdParam)
.ToList()
.FirstOrDefault();
if(approverSpResult!=null) return approverSpResult.ApproverCode;
return null;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。