我有一个mvc3应用程序,它有自己的数据库。但我的网站需要从另一个使用自己的数据库的程序中获取数据,我还需要运行位于该数据库中的存储过程。
我想知道最好的操作是建立sql连接并运行该存储过程并查询这些数据,还是有更好的方法在mvc3中处理这个问题?
答案 0 :(得分:5)
在.NET中执行数据库访问的方法有很多种。如果此其他程序没有为您提供强类型API来查询数据库,则可以将普通ADO.NET与SqlConnection,SqlCommand一起使用(其中包括其他内容)到invoke stored procedures)或ORM,如实体框架。
答案 1 :(得分:0)
在ASP.NET MVC中,您应该将数据访问代码放在模型中(即不在视图或控制器中),但除此之外,您可以使用您熟悉的任何数据访问技术。
答案 2 :(得分:0)
正如Darin已经说过,有很多方法可以在.NET中执行数据库访问。这是我使用SqlConnection和SqlCommand的示例。当然这是在假设您连接到SQL Db。
using (SqlConnection con = new SqlConnection(Global.GetConnectionString()))
{
con.Open();
using (SqlCommand cmd = new SqlCommand())
{
cmd.Connection = con;
cmd.CommandText = @"SELECT [ID],[suburb],[state],[postcode],[country],[latitude],[longitude]
FROM [suburbGeocodes]
WHERE ID = @ID";
//include the ID in the command to make the Load() generic
cmd.Parameters.Add(new SqlParameter("@ID", id));
using (SqlDataReader drd = cmd.ExecuteReader(System.Data.CommandBehavior.SingleResult))
{
if (drd.Read())
{
this.Load(drd);
}
}
}
}
连接字符串位于Web.config文件中。我只是使用我创建的全局对象来形成它。它可以从Web.config文件中读取,如下所示
ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
}
web.config文件中的连接字符串是......
<connectionStrings>
<add name="ConnectionString" connectionString="Data Source=datasource;Initial Catalog=databasename;Persist Security Info=True;User ID=user;Password=password" providerName="System.Data.SqlClient" />
</connectionStrings>