Entity Framework 三层架构--持久层使用封装之实体模型

本文探讨了如何在使用Entity Framework的三层架构中,通过 DaoTemplate 类实现持久层的封装,以减少直接操作ObjectContext的需求。目标是简化业务层的代码,支持事务,并提供动态查询的能力。作者采用了model first的方法,介绍了项目结构、类的设计,特别是利用Lambda表达式扩展方法来构建动态查询条件。
摘要由CSDN通过智能技术生成

Entity Framework的横空出世确立了其在.net领域官方ORM中的霸主地位,给我们开发者带来了福音,但是使用使用上还是有些不便捷的地方,尤其是在三层架构的项目中,在业务层不容许出现直接操作ObjectContext 的情况下,需要针对不同实体编写不同DAO的工作是令人感到繁琐的。于是封装一个DaoTemplate类试图通过泛型手段涵盖所有可能的查询封装要解决几个问题:

1、持久层用一个类DaoTemplate尽量涵盖80%的查询需求,也可以根据需要编写子类进行扩展

2、业务层不容许直接操作ObjectContext对象,业务层只关注业务,可以调用DaoTemplate实现各种读写能力

3、业务层对持久层的多次调用要支持事务

4、业务层事务代码对于成员是透明的,程序员无需知道事务的存在,而只管在业务方法里面编写复杂的业务

我采用model first的思路,模型如下:

项目结构如下:

一些类的介绍:

下面这个类来自网络一位仁兄的博客,实现的是对Expression<Func<T, bool>>这种Lambda表达式提供And和Or扩展方法以实现动态查询中动态构造Lambda条件表达式的需要:


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值