玩转ASP.NET 5:数据操作封装(一)

1.数据操作封装

  • 1.1概述

在习惯使用ADO.NET数据库访问与操作封装,通常写DataHelper/SQLHelper类。到如今ORM大行其道,我们该爱上存储库模式来封装操作。当然,为了顾及初学者,在封装方法时,还是教学方式,一步步地来,最终重构成通用可重用的代码。所以一开始先不用泛型及写一些扩展方法。

  • 1.2新增目录

  • 1.3代码

面向接口编程方式,先定义接口:

using BlogASPNET5.Entity.Accounts;
using System.Collections.Generic;

namespace BlogASPNET5.Repository.Interfaces
{
    public interface IUserRepository
    {
        IEnumerable<User> GetUsers();
        User GetUser(int id);
        User CreateUser(User user);
        User UpdateUser(int id, User user);
        bool DeleteUser(int id);
    }
}

接口实现:

using BlogASPNET5.Repository.Interfaces;
using BlogASPNET5.Entity.Accounts;
using System.Collections.Generic;
using BlogASPNET5.Repository.Contexts;
using System.Linq;

namespace BlogASPNET5.Repository.Implements
{
    public class UserRepository :IUserRepository
    {
        //应该构造函数实例化,并注入DI容器,单例模式
        EFContext db =new EFContext();

        public User CreateUser(User user)
        {
            db.Users.Add(user);
            db.SaveChanges();
            return user;
        }

        public bool DeleteUser(int id)
        {
            var user = db.Users.Where(u => u.Id == id).First();
            db.Users.Remove(user);
            if (db.SaveChanges() > 0)
            {
                return true;
            }
            return false;
        }

        public User GetUser(int id)
        {
            var user = db.Users.Where(u => u.Id == id).First();
            return user;
        }

        public IEnumerable<User> GetUsers()
        {
            return db.Users.AsEnumerable();
        }

        public User UpdateUser(int id, User us)
        {
            var user = db.Users.Where(u => u.Id == id).First();

            if (user != null)
            {
                user.Name = us.Name;
                user.Password = us.Password;
                user.Gender = us.Gender;
                user.Role = us.Role;

                db.SaveChanges();
            }
            return user;
        }
    }
}
  • 1.4调用

在控制台程序测试:

using BlogASPNET5.Repository.Implements;
using BlogASPNET5.Repository.Interfaces;
using System;

namespace BlogASPNET5.ConsoleApp
{
    public class Program
    {
        public void Main(string[] args)
        {
            //接口引用具体实例,显然没有解耦
            //ASP.NET 5已经内置DI,很方便配置,后文再说
            IUserRepository ur = new UserRepository();

            var list = ur.GetUsers();
            foreach (var item in list)
            {
                Console.WriteLine(item.Name);
            }

            Console.ReadLine();
        }
    }
}

2.小结

本篇代码其实很烂,但从简入繁的过程,却是很容易理解。(回头再续下一篇……)

时间: 2024-11-06 13:42:27

玩转ASP.NET 5:数据操作封装(一)的相关文章

玩转ASP.NET 5:单元测试

1.前言 在讲<玩转ASP.NET 5:数据操作封装(二)>(草稿已经打样了,还在斟酌当中)之前,我想尝试部署ASP.NET5单元测试环境,很迷茫不知道用那个测试框架?虽然我现在不习惯,不擅长单元测试思维编程方式,但最近在摸索吧.这不,我得找一下ASP.NET5下测试框架.也就看到大名鼎鼎的Xunit框架支持VS2015 CTP5的情况. 本文也就参考http://xunit.github.io/docs/getting-started-aspnet.html 体会一下,算作个人防抄笔记吧!

玩转ASP.NET 5:初始化数据库

1.初始化数据库 1.2目录 这不是专述模式/架构设计的帖子,架构搭建以讲解文章为目的,先不过多分层. 截这个图也是便于你对应下面找代码文件路径! 1.2代码 先控制台应用程序来演示.(比较蛋疼,MS针对ASP.NET 5测试框架在beta1版中,可用XUnit.KRunner.beta2中我也不知道用那个.) 不管你用不用EF?传统做法先设计数据库,但写代码面向对象开发时还是要设计实体(模型),为了方便映射实体的属性和数据库字段是一一对应(也可以通过Fluent API配置,实体属性设计和字段

数据操作的封装--sqlhelper

为了提高软件的灵活性和可维护性,软件的代码需要科学的管理,我们引入了架构这个词.设计模式提醒我们,软件中重复性的代码需要封装起来.最近在做收费系统时,需要和数据库进行频繁的联系,既然是重复的使用,就需要封装,这里使用到了sql helper . 先来看看百度对sqohelper的解释:一个基于.NETFframework的数据库操作组件.虽然不知道组件的具体含义,还是可以猜出来它就是D层中对数据库操作进行封装的工具. 数据库的操作,不外乎四种模式,增.删.改.查,根据返回值来区分,可以分为有返回

Android适配器之DataModifyHelper数据操作类的封装

编写适配器代码时常常被以下几个问题所困扰: 1.业务层和适配器中对同一组数据进行维护,难以管理 2.在业务层针对数据进行修改后必须通知适配器更新,否则提示The content of the adapter has changed but ListView did not receive anotification 3.业务层修改数据时充斥大量的非空&数据标准化等冗余代码 针对前两个问题,可以将数据交由适配器去管理,业务层对数据的增删改查均通过适配器进行处理,这样仅需要维护好adapter中的数

JDBC通用的数据库数据操作[CRUD]封装

package com.lyang.dao; import java.lang.reflect.Field; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.util.ArrayList; import java.

7 天玩转 ASP.NET MVC — 第 7 天

目录 第 1 天 第 2 天 第 3 天 第 4 天 第 5 天 第 6 天 第 7 天 0. 前言 今天是开心的一天.因为我们终于来到了系列学习的最后一节.我相信你喜欢之前的课程,并从中学到了许多. 1. Lab 32 - 让项目有组织性 这个实验确切地讲无关任何新的功能.它只是使项目更有结构性和系统化. 第一步:创建解决方案文件夹 右击解决方案,然后选择 Add -> New Solution Folder. 将文件夹的名称改为「View And Controller」.现在重复这个步骤,创

7 天玩转 ASP.NET MVC — 第 1 天

0. 前言正如标题「7 天玩儿转 ASP.NET MVC」所言,这是个系列文章,所以将会向大家陆续推出 7 篇.设想一下,一天一篇,你将从一个愉快的周一开始阅读,然后在周末成为一个 ASP.NET MVC 开发者,这很酷吧! 7 天玩儿 转 ASP.NET MVC — 第 1 天 第一天是热身运动,这篇我们将围绕 Controller 和 Views 实践两个 Labs.在每个 Lab 之中都伴随着一些 Question 和 Answer.所以文章的主体框架是 Lab 和 Q&A. 7 天玩儿

7 天玩转 ASP.NET MVC — 第 2 天

0. 前言 我相信在开始第 2 天的学习时,你已经顺利地完成了第 1 天的课程. 我们回顾一下第 1 天的主要关注点: 为什么选择 ASP.NET MVC ? ASP.NET Webforms 和 ASP.NET MVC 的对比 理解 ASP.NET MVC 的 Controller 以及 Views 提醒:如果你还没有完成第 1 天的学习,最好先确保完成它.我们的目标是在最后一天用最佳实践和最新技术方法来创建一个小的 MVC 项目.每一天的 Lab 训练中,我们都会比之前一天增加一些实用性的功

ASP.NET中数据棒图,饼图,柱状图的实现

Web中绘制图形的方法大致有: 1. VML方式:功能强大,但是非常麻烦. 推荐:http://www.elook.net.cn/vml/ 2.使用控件:Dandus, Aspose.chart,ComponentOne使用方便.虽然有破解,但非开源. ComponetOne: http://blog.csdn.net/ChengKing/category/146827.aspx 3.结合OFFICE Web Components开发. 4.使用商用工控组件. 5.自己编写程序. 数据棒图实现