首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用EF核调用.net 6中的存储过程

如何使用EF核调用.net 6中的存储过程
EN

Stack Overflow用户
提问于 2022-10-26 09:04:09
回答 2查看 120关注 0票数 0

我有一个使用EFCore从代码中调用它的过程

下面是我的程序结构

代码语言:javascript
复制
Create PROCEDURE [dbo].[BusinessOrders]  
(
    @StatusID INT ,
    @BusinessBranchID INT,
    @LangID INT ,
    @PurchasedOn NVARCHAR(MAX) ,
    @Search NVARCHAR(MAX),
    @PageSize INT,
    @PageNo INT 
)
AS
BEGIN

END

这是我的代码函数

代码语言:javascript
复制
public IEnumerable<BusinessOrderEntity.BODB> GetBusinessOrders(int StatusID, int BusinessBranchID, int LangID, string PurchasedOn = "", string Search = "", int PageSize = 10, int PageNo = 1)
{
    // here need to call procedure.
}

我找到了不同的解决方案,但它不适用于我的上下文类

EN

回答 2

Stack Overflow用户

发布于 2022-10-26 15:27:22

您可以使用FromSqlInterpolated方法。

代码语言:javascript
复制
context.BODB.FromSqlInterpolated(
    $"[dbo].[BusinessOrders] {statusId}, {businessBranchId}, {langId}, {purchasedOn}, {search}, {pageSize}, {pageNo}");

有关更多信息,请参见SQL查询

票数 1
EN

Stack Overflow用户

发布于 2022-10-26 10:46:02

EF Core支持调用存储过程的旧样式:

代码语言:javascript
复制
private async Task ExecuteStoredProc()
{
    DbCommand cmd = _context.Database.GetDbConnection().CreateCommand();

    cmd.CommandText = "dbo.sp_DoSomething";
    cmd.CommandType = CommandType.StoredProcedure;

    cmd.Parameters.Add(new SqlParameter("@firstName", SqlDbType.VarChar) { Value = "Steve" });
    cmd.Parameters.Add(new SqlParameter("@lastName", SqlDbType.VarChar) { Value = "Smith" });

    cmd.Parameters.Add(new SqlParameter("@id", SqlDbType.BigInt) { Direction = ParameterDirection.Output });

    if (cmd.Connection.State != ConnectionState.Open)
    {
        cmd.Connection.Open();
    }

    await cmd.ExecuteNonQueryAsync();

    long id = (long)cmd.Parameters["@Id"].Value;
}

您可以在这里查看类似的问题:

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74205154

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档