gpt4 book ai didi

c# - 如何通过c#mvc函数传递两个参数来调用存储过程

转载 作者:太空狗 更新时间:2023-10-29 18:09:15 24 4
gpt4 key购买 nike

当我需要传递单个参数时,我可以很容易地做到这一点,如下所示:

 public ProjectsModel GetProjectListBySearch(int projectId)
{
try
{
using (_context = new Exo_ADBEntities())
{
var getdetailprojectlist = _context.Database.SqlQuery<ProjectsModel>("exec dbo.[GetProjectListByID] @ProjectID", new SqlParameter("@ProjectID", projectId)).FirstOrDefault();
return getdetailprojectlist;
}

}
catch (Exception)
{

throw;
}
}

这很好用,但是当我尝试做同样的事情但传递两个参数时,我发现语法错误称为无效参数请帮助我这样做。使用两个参数时的代码如下

 public List<ProjectsModel> GetProjectDetailsBySectorAndSubSector(int sectorid,int subsectorid)
{
try
{
using (_context = new Exo_ADBEntities())
{
var projectbysectorandsubsector = _context.Database.SqlQuery<ProjectsModel>("exec dbo.[GetProjectDetailsBySectorAndSubSector] @sectorId,@subSectorId", new SqlParameter("@sectorId, @subSectorId", sectorid, subsectorid)).ToList();
return projectbysectorandsubsector;
}

}
catch (Exception)
{

throw;
}
}

最佳答案

问题是您试图将多个参数作为单个对象传递。

如果你look at the signature Database.SqlQuery 你会看到这个:

public DbRawSqlQuery<TElement> SqlQuery<TElement>(
string sql,
params Object[] parameters
)

这太基础了,但是,当您在 C# 函数中看到 params 时,它表示“任意数量的可选参数”。这意味着您可以根据需要传递任意数量的参数。所以,在你的情况下,它就像这样:

_context.Database.SqlQuery<ProjectsModel>(
"exec dbo.[GetProjectDetailsBySectorAndSubSector] @sectorId,@subSectorId",
new SqlParameter("@sectorId", sectorid),
new SqlParameter("@subSectorId", subsectorid)
).ToList()

注意当你找到params Object[]时,你也可以传递一个数组而不是几个params,即

_context.Database.SqlQuery<ProjectsModel>(
"exec dbo.[GetProjectDetailsBySectorAndSubSector] @sectorId,@subSectorId",
new Object[] { new SqlParameter("@sectorId", sectorid),
new SqlParameter("@subSectorId", subsectorid)}
).ToList()

根据您的代码看起来,这样会更方便。

关于c# - 如何通过c#mvc函数传递两个参数来调用存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23976618/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com