我按照说明here尝试从LightSwitch 2012应用程序中调用(无参数)MySQL SP。这个引用的说明适用于SQL Server SP。
以下是相关代码:
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失败“用户'root登录失败'。”我知道用户名和密码都没问题,因为具有相同连接字符串的其他数据库操作在LightSwitch中工作得很好。
是否可以在LightSwitch中调用MySQL SP?如果是这样,怎么样?
答案 0 :(得分: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();
}
}
}
太糟糕了,似乎没有一个允许实例化的公共基类,具体取决于使用哪个DB服务器..