玩转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.小结
本篇代码其实很烂,但从简入繁的过程,却是很容易理解。(回头再续下一篇……)
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。