温馨提示×

在.NET Core中如何使用存储过程

小樊
90
2024-09-06 19:15:50
栏目: 云计算

在.NET Core中,你可以使用ADO.NET或者Entity Framework Core来执行存储过程

  1. 使用ADO.NET执行存储过程:

首先,确保已经安装了System.Data.SqlClient包。然后,按照以下步骤操作:

using System;
using System.Data;
using System.Data.SqlClient;

namespace ConsoleApp
{
    class Program
    {
        static void Main(string[] args)
        {
            string connectionString = "your_connection_string";

            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                connection.Open();

                using (SqlCommand command = new SqlCommand("your_stored_procedure_name", connection))
                {
                    command.CommandType = CommandType.StoredProcedure;

                    // 添加参数
                    command.Parameters.AddWithValue("@param1", "value1");
                    command.Parameters.AddWithValue("@param2", "value2");

                    // 执行存储过程
                    using (SqlDataReader reader = command.ExecuteReader())
                    {
                        while (reader.Read())
                        {
                            // 处理结果集
                            Console.WriteLine($"Column1: {reader["Column1"]}, Column2: {reader["Column2"]}");
                        }
                    }
                }
            }
        }
    }
}
  1. 使用Entity Framework Core执行存储过程:

首先,确保已经安装了Microsoft.EntityFrameworkCore和Microsoft.EntityFrameworkCore.SqlServer包。然后,按照以下步骤操作:

a. 在DbContext类中添加一个DbSet属性,用于表示存储过程返回的实体类型:

public DbSet<YourEntity> YourEntities { get; set; }

b. 在DbContext类中添加一个方法,用于执行存储过程:

public async Task<List<YourEntity>> ExecuteStoredProcedureAsync(string storedProcedureName, params SqlParameter[] parameters)
{
    var result = await YourEntities
        .FromSqlRaw($"EXEC {storedProcedureName} @param1, @param2", parameters)
        .ToListAsync();

    return result;
}

c. 在需要执行存储过程的地方调用这个方法:

using System.Threading.Tasks;
using Microsoft.Data.SqlClient;

// ...

string storedProcedureName = "your_stored_procedure_name";
var param1 = new SqlParameter("@param1", "value1");
var param2 = new SqlParameter("@param2", "value2");

var result = await _context.ExecuteStoredProcedureAsync(storedProcedureName, param1, param2);

这样,你就可以在.NET Core中使用存储过程了。注意根据实际情况修改代码中的连接字符串、存储过程名称、参数等。

0