首页

基于EF+WCF的通用三层架构 含解析 附源码

c#

2020-8-29

本项目结合EF 4.3及WCF实现了经典三层架构,各层面向接口,WCF实现SOA,Repository封装调用,在此基础上实现了WCFContext,动态服务调用及一个分页的实例。

项目架构:

在传统的三层架构上增加了WcfService(服务端),WcfClientProxy(客户端服务调用),及WcfExtension(一些扩展)

  • 工厂实现了RemoteServiceFactory(用于远程调用)和RefServiceFactory(本地引用调用服务层)生成客户端代理,都需要实现IServiceFactory的“IService CreateService();”
  • RemoteServiceFactory通过ChannelFactory动态产生客户端代理类IService,并将此对象进行缓存
  • WCFExtension实现了WCFContext,可传输用户登陆或IP上下文信息,以及拦截方法写Log的机制

 

数据层Repository的实现:

View Code 
 public class DaoBase : IRepository, IDisposable
     {
         public DbContext context;
 
         public DaoBase()
         {
             this.context = new EasyEF.DAL.DbContext();
         }
 
         public T Update<T>(T entity) where T : class
         {
             var set = context.Set<T>();
             set.Attach(entity);
             context.Entry<T>(entity).State = EntityState.Modified;
             context.SaveChanges();
 
             return entity;
         }
 
         public T Insert<T>(T entity) where T : class
         {
             context.Set<T>().Add(entity);
             context.SaveChanges();
             return entity;
         }
 
         public void Delete<T>(T entity) where T : class
         {
             context.Entry<T>(entity).State = EntityState.Deleted;
             context.SaveChanges();
         }
 
         public T Find<T>(params object[] keyValues) where T : class
         {
             return context.Set<T>().Find(keyValues);
         }
 
         public List<T> FindAll<T>(Expression<Func<T, bool>> conditions = null) where T : class
         {
             if (conditions == null)
                 return context.Set<T>().ToList();
             else
                 return context.Set<T>().Where(conditions).ToList();
         }
 
         public PagedList<T> FindAllByPage<T, S>(Expression<Func<T, bool>> conditions, Expression<Func<T, S>> orderBy, int pageSize, int pageIndex) where T : class
         {
             var queryList = conditions == null ? context.Set<T>() : context.Set<T>().Where(conditions) as IQueryable<T>;
 
             return queryList.OrderByDescending(orderBy).ToPagedList(pageIndex, pageSize);
         }
 
         public void Dispose()
         {
             this.context.Dispose();
         }

 

资源下载此资源下载价格为2D币(VIP免费),请先
资源文件列表
EasyEF/Binaries/EntityFramework.dll , 1060640
EasyEF/DeleteBin.bat , 269
EasyEF/EasyEF.BLL/EasyEF.BLL.csproj , 3294
EasyEF/EasyEF.BLL/Properties/AssemblyInfo.cs , 1442
EasyEF/EasyEF.BLL/Service.cs , 825
EasyEF/EasyEF.Common/EasyEF.Common.csproj , 2127
EasyEF/EasyEF.Common/IPagedList.cs , 203
EasyEF/EasyEF.Common/PagedList.cs , 2108
EasyEF/EasyEF.Common/Properties/AssemblyInfo.cs , 1448
EasyEF/EasyEF.Contract/EasyEF.Contract.csproj , 2561
EasyEF/EasyEF.Contract/IService.cs , 368
EasyEF/EasyEF.Contract/Properties/AssemblyInfo.cs , 1452
EasyEF/EasyEF.Controls/CheckBoxList.cs , 4521
EasyEF/EasyEF.Controls/EasyEF.Controls.csproj , 2936
EasyEF/EasyEF.Controls/HtmlPrefixScope.cs , 2882
EasyEF/EasyEF.Controls/MvcPager/PagerBuilder.cs , 29422
EasyEF/EasyEF.Controls/MvcPager/PagerHelper.cs , 19154
EasyEF/EasyEF.Controls/MvcPager/PagerItem.cs , 849
EasyEF/EasyEF.Controls/MvcPager/PagerOptions.cs , 7920
EasyEF/EasyEF.Controls/Properties/AssemblyInfo.cs , 1452
EasyEF/EasyEF.Controls/RadioBoxList.cs , 2772
EasyEF/EasyEF.DAL/DAO.cs , 157
EasyEF/EasyEF.DAL/DaoBase.cs , 2024
EasyEF/EasyEF.DAL/DbContext.cs , 438
EasyEF/EasyEF.DAL/EasyEF.DAL.csproj , 3077
EasyEF/EasyEF.DAL/Properties/AssemblyInfo.cs , 1442
EasyEF/EasyEF.IDAL/EasyEF.IDAL.csproj , 2346
EasyEF/EasyEF.IDAL/IDAO.cs , 149
EasyEF/EasyEF.IDAL/IRepository.cs , 644
EasyEF/EasyEF.IDAL/Properties/AssemblyInfo.cs , 1444
EasyEF/EasyEF.Models/Category.cs , 427
EasyEF/EasyEF.Models/EasyEF.Models.csproj , 2739
EasyEF/EasyEF.Models/Product.cs , 694
EasyEF/EasyEF.Models/Properties/AssemblyInfo.cs , 1448
EasyEF/EasyEF.sln , 7833
EasyEF/EasyEF.suo , 126464
EasyEF/EasyEF.Utility/Caching.cs , 1063
EasyEF/EasyEF.Utility/EasyEF.Utility.csproj , 2343
EasyEF/EasyEF.Utility/Fetch.cs , 3058
EasyEF/EasyEF.Utility/Properties/AssemblyInfo.cs , 1450
EasyEF/EasyEF.Utility/RegExp.cs , 2182
EasyEF/EasyEF.Utility/SerializeHelper.cs , 2965
EasyEF/EasyEF.WCFClientProxy/EasyEF.WCFClientProxy.csproj , 3197
EasyEF/EasyEF.WCFClientProxy/IServiceFactory.cs , 171
EasyEF/EasyEF.WCFClientProxy/Properties/AssemblyInfo.cs , 1464
EasyEF/EasyEF.WCFClientProxy/RefServiceFactory.cs , 268
EasyEF/EasyEF.WCFClientProxy/RemoteServiceFactory.cs , 2157
EasyEF/EasyEF.WCFExtension/EasyEF.WCFExtension.csproj , 2581
EasyEF/EasyEF.WCFExtension/InspectorBehavior.cs , 2944
EasyEF/EasyEF.WCFExtension/MessageInspector.cs , 1404
EasyEF/EasyEF.WCFExtension/Properties/AssemblyInfo.cs , 1460
EasyEF/EasyEF.WCFExtension/WCFContext.cs , 2314
EasyEF/EasyEF.WCFService/App_data/MyDb.mdf , 2359296
EasyEF/EasyEF.WCFService/App_data/MyDb_log.ldf , 589824
EasyEF/EasyEF.WCFService/EasyEF.WCFService.csproj , 4351
EasyEF/EasyEF.WCFService/Properties/AssemblyInfo.cs , 1415
EasyEF/EasyEF.WCFService/Service.svc , 114
EasyEF/EasyEF.WCFService/Service.svc.cs , 381
EasyEF/EasyEF.WCFService/Web.config , 2496
EasyEF/EasyEF.WCFService/Web.Debug.config , 1285
EasyEF/EasyEF.WCFService/Web.Release.config , 1346
EasyEF/EasyEF.Web/Controllers/HomeController.cs , 1585
EasyEF/EasyEF.Web/EasyEF.Web.csproj , 6376
EasyEF/EasyEF.Web/Global.asax , 102
EasyEF/EasyEF.Web/Global.asax.cs , 1187
EasyEF/EasyEF.Web/Properties/AssemblyInfo.cs , 1401
EasyEF/EasyEF.Web/Views/Home/Index.cshtml , 475
EasyEF/EasyEF.Web/Views/Shared/Error.cshtml , 210
EasyEF/EasyEF.Web/Views/Shared/_Layout.cshtml , 314
EasyEF/EasyEF.Web/Views/Web.config , 2873
EasyEF/EasyEF.Web/Views/_ViewStart.cshtml , 55
EasyEF/EasyEF.Web/Web.config , 2066
EasyEF/EasyEF.Web/Web.Debug.config , 1285
EasyEF/EasyEF.Web/Web.Release.config , 1346
没有账号? 忘记密码?

社交账号快速登录