当前位置: 首页 > news >正文

品牌微营销网站建设网站设计的主要机构有哪些?

品牌微营销网站建设,网站设计的主要机构有哪些?,夜间app排行榜,怎么做网站图片seo新人刚开始学习ASP.NET MVC#xff0c;若有不足之处希望能得到您的指点#xff0c;不胜感激#xff01; 先来一张项目的层级结构图: Model#xff1a;模型层#xff0c;主要是各种类型、枚举以及ORM框架#xff0c;框架完成数据库和实体类的映射。项目中选用了微软的开源…       新人刚开始学习ASP.NET MVC若有不足之处希望能得到您的指点不胜感激          先来一张项目的层级结构图:       Model模型层主要是各种类型、枚举以及ORM框架框架完成数据库和实体类的映射。项目中选用了微软的开源ORM框架 EntityFramework 6.0 以下简称EF数据库则选择了微软的轻量级数据库SQL Server Compact 4.0本地数据库简称CompactCompact对EF支持比较完美又属于文档型数据库部署起来比较简洁。       DAL数据访问层主要是对数据库的操作层为业务逻辑层或表示层提供数据服务。       IDAL数据访问接口层是数据访问层的接口降低耦合。       DALFactory数据会话层封装了所有数据操作类实例的创建将数据访问层与业务逻辑层解耦。       BLL业务逻辑层主要负责对数据层的操作把一些数据层的操作进行组合以完成业务的需要。       IBLL业务逻辑接口层业务逻辑层的接口降低耦合。       WebApp表现层是一个ASP.NET MVC项目完成具体网站的实现。       Common通用层用来存放一些工具类。       下面是各个层级之间具体的实现首先创建以 项目名.层级名 命名的各个层次除WebApp层为ASP.NET MVC项目外其余均创建为类库项目。           模型层的构建       先建立模型层新建ASP.NET 实体数据模型关联到已经设计好的数据库EF自动完成模型类的创建。   数据访问层的构建       DAL层中我们首先需要一个方法来获取单例的EF数据操纵上下文对象以保证每个用户访问时只有使用一个上下文对象对数据库进行操作。DbContextFactory.cs using System.Data.Entity; using System.Runtime.Remoting.Messaging; using PMS.Model;namespace PMS.DAL {public class DbContextFactory{/// summary/// 负责创建EF数据操作上下文实例,必须保证线程内唯一/// /summarypublic static DbContext CreateContext(){DbContext dbContext (DbContext)CallContext.GetData(dbContext);if (dbContext ! null) return dbContext;dbContext new PMSEntities();CallContext.SetData(dbContext, dbContext);return dbContext;}} }       为User类创建DAL层实现查询、分页查询、增加、删除和修改这五个基本的方法UserDAL.cs using System; using System.Data.Entity; using System.Linq; using PMS.IDAL;namespace PMS.DAL {public partial class UserDal {public DbContext DbEntities DbContextFactory.CreateContext();/// summary/// 查询过滤/// /summary/// param namewhereLamada过滤条件Lambda表达式/param/// returns实体集合/returnspublic IQueryableUserDal LoadEntities(System.Linq.Expressions.ExpressionFuncUserDal, bool whereLamada){return DbEntities.SetUserDal().Where(whereLamada);}/// summary/// 分页查询/// /summary/// typeparam nameTS排序类型/typeparam/// param namepageIndex查询的页码/param/// param namepageSize每页显示的数目/param/// param nametotalCount符合条件的总行数/param/// param namewhereLambda过滤条件Lambda表达式/param/// param nameorderbyLambda排序Lambda表达式/param/// param nameisAsc排序方向/param/// returns实体集合/returnspublic IQueryableUserDal LoadPageEntitiesTS(int pageIndex, int pageSize, out int totalCount, System.Linq.Expressions.ExpressionFuncUserDal, bool whereLambda, System.Linq.Expressions.ExpressionFuncUserDal, TS orderbyLambda, bool isAsc){var temp DbEntities.SetUserDal().Where(whereLambda);totalCount temp.Count();temp isAsc ? temp.OrderBy(orderbyLambda).Skip((pageIndex - 1) * pageSize).Take(pageSize) : temp.OrderByDescending(orderbyLambda).Skip((pageIndex - 1) * pageSize).Take(pageSize);return temp;}/// summary/// 删除数据/// /summary/// param nameentity待删数据/param/// returns删除结果/returnspublic bool DeleteEntity(UserDal entity){DbEntities.Entry(entity).State EntityState.Deleted;return true;}/// summary/// 编辑数据/// /summary/// param nameentity待编辑数据/param/// returns编辑结果/returnspublic bool EditEntity(UserDal entity){DbEntities.Entry(entity).State EntityState.Modified;return true;}/// summary/// 添加数据/// /summary/// param nameentity待添加数据/param/// returns已添加数据/returnspublic UserDal AddEntity(UserDal entity){entity DbEntities.SetUserDal().Add(entity);return entity;} } } 注这里的增删改操作并不即时进行而是在封装在数据会话层中以实现工作单元模式提高数据库的操作效率。       考虑到每个类都需要实现相同的数据操作我们可以将以上方法封装到一个泛型基类中各类型只需要继承泛型基类就可以实现以上方法BaseDal.cs using System; using System.Data.Entity; using System.Linq;namespace PMS.DAL {public class BaseDalT where T:class ,new(){public DbContext DbEntities DbContextFactory.CreateContext();/// summary/// 查询过滤/// /summary/// param namewhereLamada过滤条件Lambda表达式/param/// returns实体集合/returnspublic IQueryableT LoadEntities(System.Linq.Expressions.ExpressionFuncT, bool whereLamada){return DbEntities.SetT().Where(whereLamada);}/// summary/// 分页查询/// /summary/// typeparam nameTS排序类型/typeparam/// param namepageIndex查询的页码/param/// param namepageSize每页显示的数目/param/// param nametotalCount符合条件的总行数/param/// param namewhereLambda过滤条件Lambda表达式/param/// param nameorderbyLambda排序Lambda表达式/param/// param nameisAsc排序方向/param/// returns实体集合/returnspublic IQueryableT LoadPageEntitiesTS(int pageIndex, int pageSize, out int totalCount, System.Linq.Expressions.ExpressionFuncT, bool whereLambda, System.Linq.Expressions.ExpressionFuncT, TS orderbyLambda, bool isAsc){var temp DbEntities.SetT().Where(whereLambda);totalCount temp.Count();temp isAsc ? temp.OrderBy(orderbyLambda).Skip((pageIndex - 1) * pageSize).Take(pageSize) : temp.OrderByDescending(orderbyLambda).Skip((pageIndex - 1) * pageSize).Take(pageSize);return temp;}/// summary/// 删除数据/// /summary/// param nameentity待删数据/param/// returns删除结果/returnspublic bool DeleteEntity(T entity){DbEntities.Entry(entity).State EntityState.Deleted;return true;}/// summary/// 编辑数据/// /summary/// param nameentity待编辑数据/param/// returns编辑结果/returnspublic bool EditEntity(T entity){DbEntities.Entry(entity).State EntityState.Modified;return true;}/// summary/// 添加数据/// /summary/// param nameentity待添加数据/param/// returns已添加数据/returnspublic T AddEntity(T entity){entity DbEntities.SetT().Add(entity);//DbEntities.SaveChanges();return entity;}} } UserDal继承BaseDal using PMS.IDAL; using PMS.Model;namespace PMS.DAL {public partial class UserDal : BaseDalUser{} } 数据访问接口层的构建       然后我们建立相应的IbaseDal接口和IUserDal接口并且使UserDal类实现IUserDal接口 IBaseDal using System; using System.Linq;namespace PMS.IDAL {public interface IBaseDalT where T:class,new(){IQueryableT LoadEntities(System.Linq.Expressions.ExpressionFuncT, bool whereLamada);IQueryableT LoadPageEntitiess(int pageIndex, int pageSize, out int totalCount,System.Linq.Expressions.ExpressionFuncT, bool whereLambda,System.Linq.Expressions.ExpressionFuncT, s orderbyLambda, bool isAsc);bool DeleteEntity(T entity);bool EditEntity(T entity);T AddEntity(T entity);} } IUserDal using PMS.Model;namespace PMS.IDAL {public partial interface IUserDal:IBaseDalUser{} } UserDal实现IUserDal接口 public partial class UserDal : BaseDalUser,IUserDal 数据会话层的构建 抽象工厂类AbstractFactory using System.Configuration; using System.Reflection; using PMS.IDAL;namespace PMS.DALFactory {public partial class AbstractFactory{//读取保存在配置文件中的程序集名称与命名空间名private static readonly string AssemblyPath ConfigurationManager.AppSettings[AssemblyPath];private static readonly string NameSpace ConfigurationManager.AppSettings[NameSpace];/// summary/// 获取UserDal的实例/// /summary/// returns/returnspublic static IUserDal CreateUserInfoDal(){var fullClassName NameSpace .UserInfoDal;return CreateInstance(fullClassName) as IUserDal;}/// summary/// 通过反射获得程序集中某类型的实例/// /summary/// param nameclassName/param/// returns/returnsprivate static object CreateInstance(string className){var assembly Assembly.Load(AssemblyPath);return assembly.CreateInstance(className);}} } 数据会话类DbSession using System.Data.Entity; using PMS.IDAL; using PMS.DAL;namespace PMS.DALFactory {public partial class DbSession:IDbSession{public DbContext Db{get { return DbContextFactory.CreateContext(); }}private IUserDal _userDal;public IUserDal UserDal{get { return _userDal ?? (_userDal AbstractFactory.CreateUserInfoDal()); }set { _userDal value; }}/// summary/// 工作单元模式统一保存数据/// /summary/// returns/returnspublic bool SaveChanges(){return Db.SaveChanges() 0;}} }       业务逻辑层的构建 业务类基类BaseService using System; using System.Linq; using System.Linq.Expressions; using PMS.DALFactory; using PMS.IDAL;namespace PMS.BLL {public abstract class BaseServiceT where T:class,new(){public IDbSession CurrentDbSession{get{return new DbSession();}}public IBaseDalT CurrentDal { get; set; }public abstract void SetCurrentDal();public BaseService(){SetCurrentDal();//子类一定要实现抽象方法以指明当前类的子类类型。}/// summary/// 查询过滤/// /summary/// param namewhereLambda/param/// returns/returnspublic IQueryableT LoadEntities(ExpressionFuncT, bool whereLambda){return CurrentDal.LoadEntities(whereLambda);}/// summary/// 分页/// /summary/// typeparam names/typeparam/// param namepageIndex/param/// param namepageSize/param/// param nametotalCount/param/// param namewhereLambda/param/// param nameorderbyLambda/param/// param nameisAsc/param/// returns/returnspublic IQueryableT LoadPageEntitiess(int pageIndex, int pageSize, out int totalCount, ExpressionFuncT, bool whereLambda,ExpressionFuncT, s orderbyLambda, bool isAsc){return CurrentDal.LoadPageEntitiess(pageIndex, pageSize, out totalCount, whereLambda, orderbyLambda, isAsc);}/// summary/// 删除/// /summary/// param nameentity/param/// returns/returnspublic bool DeleteEntity(T entity){CurrentDal.DeleteEntity(entity);return CurrentDbSession.SaveChanges();}/// summary/// 编辑/// /summary/// param nameentity/param/// returns/returnspublic bool EditEntity(T entity){CurrentDal.EditEntity(entity);return CurrentDbSession.SaveChanges();}/// summary/// 添加数据/// /summary/// param nameentity/param/// returns/returnspublic T AddEntity(T entity){CurrentDal.AddEntity(entity);CurrentDbSession.SaveChanges();return entity;}} }   UserService类 using PMS.IBLL; using PMS.Model;namespace PMS.BLL {public partial class UserService : BaseServiceUser{public override void SetCurrentDal(){CurrentDal CurrentDbSession.UserDal;}} }       业务逻辑接口层的构建       直接建立对应的接口并使用UserService类实现IUserService接口 IBaseService接口 using System; using System.Linq; using System.Linq.Expressions; using PMS.IDAL;namespace PMS.IBLL {public interface IBaseServiceT where T : class,new(){IDbSession CurrentDbSession { get; }IBaseDalT CurrentDal { get; set; }void SetCurrentDal();IQueryableT LoadEntities(ExpressionFuncT, bool whereLambda);IQueryableT LoadPageEntitiess(int pageIndex, int pageSize, out int totalCount,ExpressionFuncT, bool whereLambda,ExpressionFuncT, s orderbyLambda, bool isAsc);bool DeleteEntity(T entity);bool EditEntity(T entity);T AddEntity(T entity);} } IUserService接口: using PMS.Model;namespace PMS.IBLL {public partial interface IUserService:IBaseServiceUser{} } 使用UserService类实现IUserService接口: public partial class UserService : BaseServiceUser, IUserService     以上我们就完成了整个框架中关于User类的各层次的实现。转载于:https://www.cnblogs.com/WayneShao/p/5876880.html
http://www.pierceye.com/news/347955/

相关文章:

  • 珠宝网站建设公司wordpress 显示指定分类
  • 站酷网设计素材龙岗网站建设公司哪家口碑好
  • 达州达县网站建设上海网络推广服务公司
  • 周口网站关键词优化助孕网站优化推广
  • 做网站的钱叫什么科目企业做网站的好处有哪些
  • 做外贸网站流程如何建立网上商城
  • 爱网站关键词挖掘广西住房城乡建设厅
  • 零基础网站建设入门到精通视频教程河源建设网站
  • 焦作市建设工程网站石龙网站开发
  • 建公司网站报价牛商网网站建设
  • 中国现代公路建设有限公司网站网站建设技巧饣金手指排名27
  • 食品网站开发的背景阿里云oss建站 直接上传wordpress
  • 石泉政协网站建设方案网络广告推广服务
  • 怎么用lamp做网站桂林网
  • 织梦网站专题页面如何做网站排名优化提升快速
  • 公司建设网站费用吗qq官方网站登录入口
  • 怎么用自己的服务器做网站国外酷炫网站有哪些
  • 音乐网站建设规划国内最近新闻
  • 东莞骄阳网站建设wordpress 安装出现 过多重定向
  • 学校网站建设开题报告站长工具域名备案查询
  • 网站商城微信支付宝支付宝支付接口网站 空间地址是什么
  • 公司网站功能模块弹出全屏视频网站怎么做
  • 网站实现搜索功能网站建设时间规划
  • 产品单页营销型网站模板下载codex.wordpress.org
  • 河南省和城乡建设厅网站网站备案添加域名
  • 网站建设公司地址在哪济南网站建站公司
  • 图片瀑布流网站模板哪里有html5网站建设
  • 做韩国网站可以做推广的网站有哪些
  • 阳泉哪里做网站传统企业如何做好网络推广
  • 做网站不赚钱潍坊制作网站的公司