0

Я выполнил инструкции here, чтобы попытаться вызвать (без параметров) MySQL SP из приложения LightSwitch 2012. Эти приведенные инструкции предназначены для SP SQL Server.Как вызвать MySQL Хранимые процедуры из Lightswitch?

Вот соответствующий код:

using System; 
using System.Configuration; 
using System.Data; 
using System.Data.SqlClient; 
using System.Linq; 

namespace LightSwitchApplication 
{ 
    public partial class StoredProcceduresService 
    { 
     partial void MakeMasterOperations_Inserting(MakeMasterOperation entity) 
     { 
      using (SqlConnection connection = new SqlConnection()) 
      { 
       string connectionStringName = this.DataWorkspace.SystemInfo.Details.Name; 
       connection.ConnectionString = ConfigurationManager.ConnectionStrings[connectionStringName].ConnectionString; 

       string storedProcedure = "make_master"; 
       using (SqlCommand command = new SqlCommand(storedProcedure, connection)) 
       { 
        command.CommandType = CommandType.StoredProcedure; 
        connection.Open(); 
        command.ExecuteNonQuery(); 
       }    
      } 
     this.Details.DiscardChanges(); 
     } 
    } 
} 

Это терпит неудачу на connection.Open(); с SqlException «Войти неудавшейся пользователя„корень“.» Я знаю, что userid и password в порядке, так как другие манипуляции с базой данных с одной и той же строкой соединения отлично работают в LightSwitch.

Можно ли назвать MySQL SP в LightSwitch? Если да, то как?

ответ

0

Ну, я нашел ответ.

Для того, чтобы использовать MySQL вместо SQL Server, необходимо добавить ссылку на MySql.Data к проекту сервера и изменить код:

using System; 
    using System.Configuration; 
    using System.Data; 
    using System.Linq; 
    using MySql.Data.MySqlClient; 

    namespace LightSwitchApplication 
    { 
     public partial class StoredProcceduresService 
     { 
      partial void MakeMasterOperations_Inserting(MakeMasterOperation entity) 
      { 
       using (MySqlConnection connection = new MySqlConnection()) 
       { 
        string connectionStringName = this.DataWorkspace.SystemInfo.Details.Name; 
        connection.ConnectionString = ConfigurationManager.ConnectionStrings[connectionStringName].ConnectionString; 

        string storedProcedure = "make_master"; 
        using (MySqlCommand command = new MySqlCommand(storedProcedure, connection)) 
        { 
         command.CommandType = CommandType.StoredProcedure; 
         connection.Open(); 
         command.ExecuteNonQuery(); 
        }    
       } 
      this.Details.DiscardChanges(); 
      } 
     } 
    } 

Жаль, похоже, не будет общий базовый класс, который позволяет создавать экземпляры в зависимости от того, какой сервер БД используется.

Смежные вопросы