使用ASP.Net MVC与经典ADO.Net
发布时间:2020-07-03 11:34:38  所属栏目: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编辑器模板和Html.EditorFor(…) – 如何消除类
 - Asp.net MVC实现生成Excel并下载功能
 - asp.net-mvc – 如何在asp.net mvc3项目中开始使用openID?
 - asp.net-mvc – 获取ControllerName和ActionName并在Master
 - 为什么ASP.NET回发时请求cookie属性为null或不正确?
 - ASP.Net MVC cookies – 防篡改?
 - 具有多个ASP.NET Web应用程序的Visual Studio解决方案
 - asp.net – 如何扩展aspnet成员身份验证表?
 - 悟透JavaScript
 - asp.net-core – ClaimTypes的ASP.NET要求
 
推荐文章
            站长推荐
            - .net – TagBuilder从MVC 3 beta版转到RC
 - asp.net – 使用app_offline.htm使应用程序脱机,
 - asp.net-core – 具有取消令牌的自定义AspCore中
 - asp.net-mvc – ACS安装,但MVC 4.0应用程序仍然重
 - asp.net-mvc – 在MVC Razor视图中使用@RenderBo
 - asp.net-mvc – 如何将KendoUI DropDownListFor绑
 - asp.net webservice返回json的方法
 - ASP.NET标签控件 – 不编码HTML
 - Entity Framework使用DBContext实现增删改查
 - asp.net-mvc – Url.Action生成查询字符串,以任何
 
热点阅读
            