我正在关注ASP.NET MVC 2框架书(Steven Sanderson)中的示例,除了使用SQLServer之外,我使用的是mySQL。
public class ProductsController : Controller
{
private IProductsRepository productsRepository;
public ProductsController()
{
// Temporary hard-coded connection string until we set up dependency injection
string connString = "server=xx.xx.xxx.xxx;Database=db_SportsStore;User Id=dbUser;Pwd=xxxxxxxxx;Persist Security Info=True;";
productsRepository = new SportsStore.Domain.Concrete.SqlProductsRepository(connString);
}
public ViewResult List()
{
return View(productsRepository.Products.ToList());
}
}
当我运行项目时,我收到以下错误:
建立与SQL Server的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确,以及SQL Server是否配置为允许远程连接。 (提供者:命名管道提供程序,错误:40 - 无法打开与SQL Server的连接)
我已经下载了MySQL .Net连接器,在Server Explorer中我可以查看该数据库上的表。我还确保服务器上的DB允许远程连接。
我通过VS2010在本地创建和运行代码,MySQL DB在托管服务器上。
如何让这个MVC2示例为MySQL运行?
更新
我在等待答案时正在玩代码,我将ProductsController更新为以下内容:
using MySql.Data.MySqlClient;
string connString = "server=xx.xx.xxx.xxx;Database=db_SportsStore;User Id=dbUser;Pwd=xxxxxx;";
var connection = new MySqlConnection(connString);
productsRepository = new SportsStore.Domain.Concrete.SqlProductsRepository(connection);
然后在存储库中:
public SqlProductsRepository(MySql.Data.MySqlClient.MySqlConnection connection)
{
connection.Open();
productsTable = (new DataContext(connection)).GetTable<Product>();
connection.Close();
}
现在我得到一个完全不同的错误:
{“您的SQL语法出错;请查看与您的MySQL服务器版本对应的手册,以便在'[t0]。[ProductID],[t0]附近使用正确的语法。 [名称],[t0]。[说明],[t0]。[价格],[t0]。[类别]'在第1行“}
我还应该提一下......这个例子是使用LINQ to SQL。我不确定这是否重要。请指教。
答案 0 :(得分:2)
想到了几个想法。
http://dev.mysql.com/doc/refman/5.1/en/connector-net-tutorials-intro.html
编辑 - 随你的更新......
MySQL有时没有与SQL Server相同的语法。我假设这是错误所指向的。
在MySQL Connector连接字符串上,它有an option to use SQL Server Syntax称为SQL Server模式。将此设置为true,看看是否有效....
类似的东西:
Server=serverIP;Database=dbName;Uid=Username;Pwd=Password;SQL Server Mode=true;