【问题标题】:Use table functions and valued functions SQL in .net core 3 web api在.net core 3 web api中使用表函数和值函数SQL
【发布时间】:2020-04-05 10:42:29
【问题描述】:

我有一个包含许多表和值函数的数据库,是否有动态调用这些函数的方法。我使用.net core 3 web api。 请帮忙

【问题讨论】:

    标签: c# sql asp.net-core-webapi


    【解决方案1】:

    我将使用 Dapper 执行此操作,然后使用 SP 或 select 语句以您想要的方式调用函数

    以下是使用 Dapper & Select 语句从 API 获取数据的示例

        //for EF
        private readonly ApplicationDbContext _db;
    
        //For  Dapper
        private readonly SqlConnectionConfiguration _configuration;
    
    
        public NewsController(ApplicationDbContext db, SqlConnectionConfiguration configuration)
        {
            _db = db;
            _configuration = configuration;
        }
    public async Task<IActionResult> GetAll()
            {
    
                //fetch data using EF
                // return Json(new { data = await _db.News.OrderByDescending(x => x.NewsDate).ToListAsync() });
    
                //Fetch data using Dapper
                IEnumerable<News> newslist;
                using (var conn = new SqlConnection(_configuration.Value))
                {
                    string query = "select * FROM News";
    
                    conn.Open();
                    try
                    {
                        newslist = await conn.QueryAsync<News>(query, commandType: CommandType.Text);
    
                    }
                    catch (Exception ex)
                    {
                        throw ex;
                    }
                    finally
                    {
                        conn.Close();
                    }
    
                }
    
                return Json(new { data = newslist });
    
    
            }
    

    剩下的,您可以对下面的代码进行更改以使其适合您。

    【讨论】:

    • 感谢您的回答,目前我使用的是模式库和unitofwork,我可以将这个方法与dbContext一起使用吗?
    • @Anas,我自己是 asp.net 核心的新手,更喜欢将 Dapper 用于复杂的 SQL 查询和存储过程以及作为 sql 语句的一部分运行的一些函数。我已经修改了解决方案,你可以看到我为 EF 和 Dapper 定义了属性。并且可以在我的 API 控制器中使用这两者。希望这会有所帮助。如果你没有 Dapper,那么你必须安装。
    • @Anas,如果问题对您有帮助,请将其标记为正确
    • 问题不清楚,但您的回答似乎没有帮助。根据用户 cmets/feedback 进行编辑
    • @efekctive,正如你提到的,他的问题并不清楚,我的重播是基于正确的假设,但似乎用户希望我们提供完整的解决方案。我的解决方案似乎达到了他的目的或至少帮助了他......
    猜你喜欢
    • 1970-01-01
    • 2010-09-05
    • 1970-01-01
    • 1970-01-01
    • 2020-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多