使用ASP.Net MVC与经典ADO.Net
发布时间:2020-05-22 11:14:10 所属栏目:asp.Net 来源:互联网
导读:我正在寻找一种方法来访问存储过程使用经典的ADO.Net,因为我是新的ASP.Net MVC我不知道如何去。 大多数示例显示使用ADO.Net Entity框架的CRUD操作。 你可以有一个存储库: public interface IUsersRepository{ public User GetUser(int id);} 然后实现它: p
|
我正在寻找一种方法来访问存储过程使用经典的ADO.Net,因为我是新的ASP.Net MVC我不知道如何去。 大多数示例显示使用ADO.Net Entity框架的CRUD操作。 解决方法你可以有一个存储库:public interface IUsersRepository
{
public User GetUser(int id);
}
然后实现它: public class UsersRepository: IUsersRepository
{
private readonly string _connectionString;
public UsersRepository(string connectionString)
{
_connectionString = connectionString;
}
public User GetUser(int id)
{
// Here you are free to do whatever data access code you like
// You can invoke direct SQL queries,stored procedures,whatever
using (var conn = new SqlConnection(_connectionString))
using (var cmd = conn.CreateCommand())
{
conn.Open();
cmd.CommandText = "SELECT id,name FROM users WHERE id = @id";
cmd.Parameters.AddWithValue("@id",id);
using (var reader = cmd.ExecuteReader())
{
if (!reader.Read())
{
return null;
}
return new User
{
Id = reader.GetInt32(reader.GetOrdinal("id")),Name = reader.GetString(reader.GetOrdinal("name")),}
}
}
}
}
然后您的控制器可以使用此存储库: public class UsersController: Controller
{
private readonly IUsersRepository _repository;
public UsersController(IUsersRepository repository)
{
_repository = repository;
}
public ActionResult Index(int id)
{
var model = _repository.GetUser(id);
return View(model);
}
}
这样控制器不再依赖于数据访问层的实现:无论您是使用纯ADO.NET,NHibernate,EF还是其他一些ORM,调用外部Web服务,XML,都是您的名字。 现在剩下的就是配置你最喜欢的DI框架,注入到控制器的存储库的正确实现。如果明天你决定改变你的数据访问技术,没有问题,只需写一个不同的IUsersRepository接口的实现,并重新配置你的DI框架使用它。无需触摸控制器逻辑。 您的MVC应用程序不再与数据存储的方式相关联。这使得更容易单独测试您的控制器,因为它们不再紧密耦合到特定的数据源。 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc – 应用程序每15分钟编译一次
- asp.net-mvc – 什么是AsyncManager.OutstandingOperations
- regex – RegularExpressionAttribute – 如何使它不区分大
- asp.net – 从请求中获取所有发布数据
- asp.net-mvc – Visual Studio在剃刀语句中显示语法错误但有
- asp.net-mvc-3 – 如何在Razor中为Nullable创建编辑器模板
- asp.net-mvc – ASP.NET MVC 3:如何强制ActionLink执行Htt
- ASP.NET MVC项目“不支持此安装”
- ASP.NET MVC 2 – 设置Html.Form的ID
- asp.net-mvc – 通知面板类似于stackoverflow的
推荐文章
站长推荐
- asp.net – LINQ to SQL – 如何选择特定的列和返
- 选择ASP.NET MVC菜单项
- asp.net – 会话固定 – 表单身份验证
- asp.net – 你能用Javascript来检测服务器端创建
- Asp.net MVC5与Bootstrap EditorFor尺寸
- asp.net-mvc-3 – Jquery验证器重置$.validator.
- asp.net-mvc-4 – 无法加载文件或程序集’System
- ASP.NET MVC3中的HTML反而不是JSON的IIS响应
- asp.net – 在IIS 7.5上挂在Session模块上的请求
- asp.net-mvc-3 – 在html标签中添加html输入
热点阅读
