我有一个使用EFCore从代码中调用它的过程
下面是我的程序结构
Create PROCEDURE [dbo].[BusinessOrders]
(
@StatusID INT ,
@BusinessBranchID INT,
@LangID INT ,
@PurchasedOn NVARCHAR(MAX) ,
@Search NVARCHAR(MAX),
@PageSize INT,
@PageNo INT
)
AS
BEGIN
END这是我的代码函数
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.
}我找到了不同的解决方案,但它不适用于我的上下文类
发布于 2022-10-26 15:27:22
您可以使用FromSqlInterpolated方法。
context.BODB.FromSqlInterpolated(
$"[dbo].[BusinessOrders] {statusId}, {businessBranchId}, {langId}, {purchasedOn}, {search}, {pageSize}, {pageNo}");有关更多信息,请参见SQL查询。
发布于 2022-10-26 10:46:02
EF Core支持调用存储过程的旧样式:
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;
}您可以在这里查看类似的问题:
https://stackoverflow.com/questions/74205154
复制相似问题