Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何从独立于数据库的应用程序c#,codefirst调用存储过程_Mysql_Sql Server_Database_Stored Procedures_Database Independent - Fatal编程技术网

Mysql 如何从独立于数据库的应用程序c#,codefirst调用存储过程

Mysql 如何从独立于数据库的应用程序c#,codefirst调用存储过程,mysql,sql-server,database,stored-procedures,database-independent,Mysql,Sql Server,Database,Stored Procedures,Database Independent,我为应用程序支持的每个db类型创建了过程。并添加到他们的迁移文件中 在我的code first应用程序中,我可以像这样调用存储过程MSSQL两种类型 一个 两个 但是,当db提供程序更改为mysql时,会出现错误 EntityFramework.dll中发生类型为“MySql.Data.MySqlClient.MySqlException”的未处理异常 附加信息:只能存储MySqlParameter对象 此外,提供商还可以更改oracle postgresql mysql等 如何解决这个问题 我

我为应用程序支持的每个db类型创建了过程。并添加到他们的迁移文件中

在我的code first应用程序中,我可以像这样调用存储过程MSSQL两种类型 一个

两个

但是,当db提供程序更改为mysql时,会出现错误

EntityFramework.dll中发生类型为“MySql.Data.MySqlClient.MySqlException”的未处理异常 附加信息:只能存储MySqlParameter对象

此外,提供商还可以更改oracle postgresql mysql等

如何解决这个问题

我不想使用if provider==mssql if provider==mysql等

这是我的主要功能

 public void ExecuteWithStoreProcedure(string query, params object[] parameters)
    {
        _dbContext.Database.ExecuteSqlCommand(query, parameters);
    }

这是我能找到的最好的用途。如果没有开关箱或其他设备,就没有办法

public void sp_uservirman(Nullable<int> resourceUserID, Nullable<int> targetUserID)
    {
        switch (GlobalData.CustomerDataSourceType)
        {
            case ContextFactory.DataSourceTypes.None:
                break;
            case ContextFactory.DataSourceTypes.MSSQL:
                SqlParameter param= new SqlParameter("@resourceuserıd",resourceUserID);
                SqlParameter param1= new SqlParameter("@targetUserID",targetUserID);
                _dbContext.Database.ExecuteSqlCommand("sp_uservirman  @resourceuserıd,@targetUserID", param, param1);
                break;
            case ContextFactory.DataSourceTypes.MySQL:

                MySqlParameter param3 = new MySqlParameter("@resourceuserıd", resourceUserID);
                MySqlParameter param4 = new MySqlParameter("@targetUserID", targetUserID);


                _dbContext.Database.ExecuteSqlCommand("CALL sp_uservirman  (@resourceuserıd,@targetUserID)", param3, param4);
                break;
            case ContextFactory.DataSourceTypes.ORACLE:

                string query = string.Format("BEGIN SP_USERVIRMAN ({0},{1}) ; END;", resourceUserID, targetUserID);
                _dbContext.Database.ExecuteSqlCommand(query);

                break;
            default:
                break;
        }

    }
 public void ExecuteWithStoreProcedure(string query, params object[] parameters)
    {
        _dbContext.Database.ExecuteSqlCommand(query, parameters);
    }
public void sp_uservirman(Nullable<int> resourceUserID, Nullable<int> targetUserID)
    {
        switch (GlobalData.CustomerDataSourceType)
        {
            case ContextFactory.DataSourceTypes.None:
                break;
            case ContextFactory.DataSourceTypes.MSSQL:
                SqlParameter param= new SqlParameter("@resourceuserıd",resourceUserID);
                SqlParameter param1= new SqlParameter("@targetUserID",targetUserID);
                _dbContext.Database.ExecuteSqlCommand("sp_uservirman  @resourceuserıd,@targetUserID", param, param1);
                break;
            case ContextFactory.DataSourceTypes.MySQL:

                MySqlParameter param3 = new MySqlParameter("@resourceuserıd", resourceUserID);
                MySqlParameter param4 = new MySqlParameter("@targetUserID", targetUserID);


                _dbContext.Database.ExecuteSqlCommand("CALL sp_uservirman  (@resourceuserıd,@targetUserID)", param3, param4);
                break;
            case ContextFactory.DataSourceTypes.ORACLE:

                string query = string.Format("BEGIN SP_USERVIRMAN ({0},{1}) ; END;", resourceUserID, targetUserID);
                _dbContext.Database.ExecuteSqlCommand(query);

                break;
            default:
                break;
        }

    }
 worker.StoredProcedures.sp_uservirman(1, 2);