仓储模式:通用方法

public class DepartmentRepository : RepositoryBase<DepartmentEntity>, IRepositoryBase<DepartmentEntity>
{}
/// <summary>
/// 仓储接口
/// </summary>
/// <typeparam name="TEntity">实体类型</typeparam>
public interface IRepositoryBase<TEntity> where TEntity : class,new()
{int Insert(TEntity entity);
}
/// <summary>
/// 仓储实现
/// </summary>
/// <typeparam name="TEntity"></typeparam>
public class RepositoryBase<TEntity> : IRepositoryBase<TEntity> where TEntity : class,new()
{public NFineDbContext dbcontext = new NFineDbContext();public int Insert(TEntity entity){dbcontext.Entry<TEntity>(entity).State = EntityState.Added;return dbcontext.SaveChanges();}}

仓储模式:特有方法

public class DepartmentRepository : RepositoryBase<DepartmentEntity>, IDepartment
{//特有方法int SpecialFunc();
}
public interface IDepartment : IRepositoryBase<DepartmentEntity>
{ //特有方法int SpecialFunc();
}
/// <summary>
/// 仓储接口
/// </summary>
/// <typeparam name="TEntity">实体类型</typeparam>
public interface IRepositoryBase<TEntity> where TEntity : class,new()
{int Insert(TEntity entity);
}
/// <summary>
/// 仓储实现
/// </summary>
/// <typeparam name="TEntity"></typeparam>
public class RepositoryBase<TEntity> : IRepositoryBase<TEntity> where TEntity : class,new()
{public NFineDbContext dbcontext = new NFineDbContext();public int Insert(TEntity entity){dbcontext.Entry<TEntity>(entity).State = EntityState.Added;return dbcontext.SaveChanges();}}

传统三层架构多数据库实现

 public class Stock : BaseDALAccess<StockInfo>, IStock{}
  //// 摘要://     数据访问层的基类public abstract class BaseDALAccess<T> : AbstractBaseDAL<T>, IBaseDAL<T> where T : BaseEntity, new(){//// 摘要://     默认构造函数public BaseDALAccess();}
   //// 摘要://     数据访问层的超级基类,所有数据库的数据访问基类都继承自这个超级基类,包括Oracle、SqlServer、Sqlite、MySql、Access等public abstract class AbstractBaseDAL<T> where T : BaseEntity, new(){}
public interface IBaseDAL<T> where T : BaseEntity{}
 public interface IStock : IBaseDAL<StockInfo>{}
    /// <summary>/// 业务基类对象/// </summary>/// <typeparam name="T">业务对象类型</typeparam>public class BaseBLL<T> where T : BaseEntity, new(){#region 构造函数private string dalName = "";   /// <summary>/// BLL业务类的全名(子类必须实现),可使用this.GetType().FullName/// </summary>protected string bllFullName;/// <summary>/// 数据访问层程序集的清单文件的文件名,不包括其扩展名,可使用Assembly.GetExecutingAssembly().GetName().Name/// </summary>protected string dalAssemblyName;/// <summary>/// BLL命名空间的前缀(BLL.)/// </summary>protected string bllPrefix = "BLL.";/// <summary>/// 基础数据访问层接口对象/// </summary>protected IBaseDAL<T> baseDal = null;
}
public class Stock : BaseBLL<StockInfo>
{public Stock() : base(){base.Init(this.GetType().FullName, System.Reflection.Assembly.GetExecutingAssembly().GetName().Name);}//特殊方法调用public void SpecialFuc(){IStock dal = baseDal as IStock;}//普通方法调用public void FindSingle(){return baseDal.FindSingle();}

仓储模式和传统三层架构多数据库实现相关推荐

  1. 项目架构之传统三层架构和领域模型三层架构

    一.架构之传统三层架构 传统三层架构是一种软件架构,是一种典型的.基于贫血模型的.面向过程的JavaWeb分层方式.该架构分为以下三个层次: 数据访问层(DAL - Data Access Layer ...

  2. JavaEE架构之传统三层架构,集群架构,分布式架构,微服务架构

    javaEE架构 1.传统三层架构(all in one项目) 传统三层架构大致可以分为表现层,业务层和持久层(数据访问层).其中表现层负责接受请求和转发请求.业务层负责处理请求(注:事务管理,日志记 ...

  3. C#数据库教程7-ADO.NET三层架构和数据库DBNull问题

    目录 一.数据库中创建表 1.创建数据表T_Person 2.向数据表T_Person中插入数据 3.查看插入的数据 二. 创建C# Winform工程 1.添加引用 2.编辑数据库连接配置文件 3. ...

  4. mysql数据库三层架构_数据库的三层架构

    三层模式体系结构和数据独立性 第1.3节中列出了数据库方法的4个重要特点,其中有以下3个特点:(1)程序与数据分离(程序-数据独立性和程序-操作独立性):(2)支持多用户视图:(3)使用编目存储数据库 ...

  5. 浅析三层架构与MVC模式的区别

    浅析三层架构与MVC模式的区别 三层架构介绍: (点击链接即可见三层架构) MVC模式介绍: MVC全名是Model ViewController,是模型(model)-视图(view)-控制器(co ...

  6. 你真的了解传统IT的集中式三层架构及主流开发技术选型?!

    [引言] 最近在看一本书<未来架构 从服务化到云原生>,关于技术架构这部分,结合书中内容,有一些认知和感悟. 互联网的技术架构正在经历由集中式->分布式->云平台的发展历程中. ...

  7. java ssh三层架构_SSH和三层架构的MVC模式的对应关系

    1.MVC(Model-View-Controller)设计模式: 首先让我们了解下MVC(Model-View-Controller)的概念: MVC全名是Model View Controller ...

  8. 桥接模式的应用之三层架构中的业务逻辑层(BLL)与数据访问层(DAL)的解耦

    各层的作用 ①用户界面层:只负责显示和采集用户操作. ②业务逻辑层:负责UI和DAL层之间的数据交换,是系统架构中体现核心价值的部分.它关注点主要集中在业务规则的制定.业务流程的实现和业务需求的有关系 ...

  9. 仓储模式到底是不是反模式?

    [导读]仓储模式我们已耳熟能详,但当我们将其进行应用时,真的是那么得心应手吗?确定是解放了生产力吗?这到底是怎样的一个存在,确定不是反模式? 一篇详文我们探讨仓储模式,这里仅我个人的思考,若有更深刻的 ...

最新文章

  1. Leetcode 268. 缺失数字 解题思路及C++实现
  2. 【工具】win10修改默认输入法,开机直接启动谷歌输入法
  3. 迭代最近点(Iterative Closest Point, ICP)算法及matlab实现
  4. jQuery-Easyui 1.2 实现多层菜单
  5. 会议论文_InVisor会议论文辅导发表
  6. [精品]CSAPP Bomb Lab 解题报告(四)
  7. 一些关于图论和二叉树的
  8. 开发接口文档_产品经理必懂的接口文档撰写方式
  9. .netcore 判断是否 ajax 请求_第3部分-异步使用2-2:Ajax 之 状态码
  10. 虚拟局域网(VLAN)中端口tagged和untagged在多种情况下的作用
  11. 维宏控制卡win7 驱动_雕刻机专用维宏5.55运动驱动控制卡
  12. 正则表达式匹配书名号内容
  13. android 屏蔽系统输入法自定义输入法的详解
  14. jquery国际化 i18n.js
  15. vvic/搜款网API接口(item_get-根据ID取商品详情)
  16. Python(自学之旅二)
  17. 【路径规划】A*算法方法改进思路简析
  18. 四级英语测试软件,英语四级学习软件都有哪些好用啊
  19. JavaScript笔记(一)
  20. 二维测量--轮辋和轮胎的检查

热门文章

  1. 【翻译】通过GSoC、GSoD、LFX和Outreachy来庆祝CNCF实习的成功五周年
  2. Windows安装和使用binwalk
  3. Cohen's kappa coefficient
  4. Malloc源码解读三——Bins与Arena
  5. kong安装启动问题
  6. windows下,对opencv进行gcc/g++编译
  7. 输入3×4的矩阵 将值为负的位置和值输出
  8. TypeError:object of type 'type' has no len()的一种可能原因
  9. SSD: Single Shot MultiBox Detector
  10. 如何解决海外邮件发不出去