首页 > 解决方案 > 带有 EF 网络核心的执行过程 Mysql

问题描述

我尝试使用以下函数执行存储过程,但表没有更新,也没有显示错误,你能帮帮我吗

public static void UpdateShareDate(string Sharepath, string ShareDate, int TransactionID, int Clientid)
{
    try
    {
        using (var context = new AppDBContext())
        {
            MySqlConnector.MySqlParameter[] queryParams = new MySqlConnector.MySqlParameter[] {
                    new MySqlConnector.MySqlParameter("@p1", Sharepath),
                    new MySqlConnector.MySqlParameter("@p2", ShareDate),
                    new MySqlConnector.MySqlParameter("@p3", TransactionID),
                    new MySqlConnector.MySqlParameter("@p4", Clientid)
                };

            string store_pocedure = "call MediaFile_Update(@p1,@p2,@p3,@p4)";
    var result = context.DBSetMediaFiles.FromSqlRaw(store_pocedure, queryParams);

        }
    }
    catch (Exception ex)
    {

        throw;
    }
}

标签: c#mysqlentity-frameworkasp.net-corestored-procedures

解决方案


在这种情况下我会做什么来查看 DbContext 级别发生了什么,我将启用如下所示的日志记录,

  1. 在您的 dbcontext 中添加如下日志记录,

    公共静态只读 ILoggerFactory loggerFactory = new LoggerFactory(new[] { new ConsoleLoggerProvider((_, __) => true, true) });

  2. protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { optionsBuilder.UseLoggerFactory(loggerFactory) .EnableSensitiveDataLogging()
    .UseSqlServer(@"Connection string"); }

  3. 然后你会看到用每一行登录控制台。

PS:请安装 Microsoft.Extensions.Loggin.Console nuget 包

谢谢


推荐阅读