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

购物网站怎么做优化wordpress 暖岛 主题

购物网站怎么做优化,wordpress 暖岛 主题,男通网站哪个好用,广东省城乡住房建设厅网站首页文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场… 文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场景 4. ServiceStack.OrmLite4.1 设计理念4.2 基本操作示例配置与连接CRUD操作高级查询 4.3 特性与扩展4.4 适用场景 5. LLBLGen Pro5.1 框架概述5.2 设计器与代码生成5.3 查询示例Adapter模式LINQ查询 5.4 性能优化技术5.5 适用场景 6. PetaPoco6.1 微型ORM设计6.2 基本用法6.3 高级特性6.4 适用场景 7. RepoDB7.1 混合ORM设计7.2 核心操作基本CRUD批量操作 7.3 性能特性7.4 适用场景 8. 框架比较与选型指南8.1 功能对比表8.2 性能基准8.3 选型建议 9. 高级主题与最佳实践9.1 混合使用多个ORM9.2 性能优化技巧9.3 事务管理Dapper事务NHibernate事务 9.4 迁移策略 10. 结论 1. 引言 Entity Framework (EF)是微软官方推出的.NET ORM框架但.NET生态系统中还存在许多其他优秀的数据访问框架。本文将全面介绍EF的主要替代方案包括Dapper、NHibernate、ServiceStack.OrmLite、LLBLGen Pro、PetaPoco等深入分析它们的原理、架构设计、使用场景并通过大量代码示例展示它们的实际应用。 2. Dapper 2.1 概述与设计原理 Dapper是由Stack Overflow团队开发的微型ORM框架其核心设计理念是轻量级和高性能。与EF不同Dapper不提供变更跟踪、延迟加载等复杂功能而是专注于将SQL查询结果快速映射到对象。 Dapper的核心原理 基于ADO.NET的扩展方法动态生成IL代码实现高性能映射无状态设计不维护对象状态直接使用SQL不提供查询翻译层 2.2 核心功能与代码示例 基本查询 using var connection new SqlConnection(connectionString); var products connection.QueryProduct(SELECT * FROM Products WHERE Price Price, new { Price 50 });多映射查询 var sql SELECT * FROM Orders o INNER JOIN Customers c ON o.CustomerId c.IdWHERE o.OrderDate Date;var orders connection.QueryOrder, Customer, Order(sql,(order, customer) { order.Customer customer; return order; },new { Date DateTime.Now.AddDays(-30) },splitOn: Id);存储过程调用 var parameters new DynamicParameters(); parameters.Add(ProductId, 1); parameters.Add(Price, dbType: DbType.Decimal, direction: ParameterDirection.Output);connection.Execute(sp_GetProductPrice, parameters, commandType: CommandType.StoredProcedure);var price parameters.Getdecimal(Price);2.3 性能优化原理 Dapper的性能优势主要来自 动态编译首次查询时会为特定类型生成优化的映射代码缓存机制生成的映射代码会被缓存避免重复编译最小化抽象几乎不添加额外抽象层直接操作ADO.NET 2.4 适用场景 需要极致性能的应用程序已有良好SQL基础希望直接控制SQL简单CRUD操作为主的系统微服务架构中的轻量级数据访问层 3. NHibernate 3.1 概述与架构设计 NHibernate是.NET平台上的成熟ORM框架移植自Java的Hibernate。它提供了比EF更丰富的功能集和更灵活的配置选项。 NHibernate架构核心 ISession工作单元模式的实现管理对象生命周期映射系统支持XML、特性或Fluent配置查询语言HQL、Criteria API、LINQ二级缓存可插拔的缓存实现 3.2 映射配置示例 Fluent映射 public class ProductMap : ClassMapProduct {public ProductMap(){Id(x x.Id);Map(x x.Name);Map(x x.Price);References(x x.Category);HasMany(x x.OrderItems).Inverse().Cascade.AllDeleteOrphan();} }XML映射 hibernate-mapping xmlnsurn:nhibernate-mapping-2.2class nameProduct tableProductsid nameId columnProductIdgenerator classidentity//idproperty nameName not-nulltrue/property namePrice typedecimal/many-to-one nameCategory columnCategoryId/bag nameOrderItems inversetrue cascadeall-delete-orphankey columnProductId/one-to-many classOrderItem//bag/class /hibernate-mapping3.3 查询示例 HQL查询 var query session.CreateQuery(FROM Product p WHERE p.Price :price).SetDecimal(price, 100m); var products query.ListProduct();Criteria API var products session.CreateCriteriaProduct().Add(Restrictions.Gt(Price, 100m)).AddOrder(Order.Asc(Name)).SetMaxResults(10).ListProduct();LINQ提供程序 var products session.QueryProduct().Where(p p.Price 100m).OrderBy(p p.Name).Take(10).ToList();3.4 高级特性 二级缓存配置EhCache等实现拦截器实现IInterceptor自定义操作行为事件系统监听和处理持久化事件批量处理优化大批量数据操作 3.5 适用场景 复杂领域模型的企业应用需要跨数据库平台的应用已有Hibernate经验的团队需要细粒度控制持久化行为的场景 4. ServiceStack.OrmLite 4.1 设计理念 ServiceStack.OrmLite是ServiceStack套件中的轻量级ORM设计目标是提供简单、直观的API同时保持高性能。它采用约定优于配置的原则自动推断大部分映射关系。 核心特点 基于POCO的无配置映射支持多种数据库提供程序简洁的LINQ-like API与ServiceStack其他组件无缝集成 4.2 基本操作示例 配置与连接 var dbFactory new OrmLiteConnectionFactory(connectionString, SqlServerDialect.Provider);using var db dbFactory.Open(); db.CreateTableIfNotExistsProduct();CRUD操作 // 插入 var product new Product { Name iPad, Price 499 }; db.Insert(product); var id product.Id; // 自动获取自增ID// 查询 var expensiveProducts db.SelectProduct(p p.Price 1000);// 更新 product.Price 449; db.Update(product);// 删除 db.DeleteProduct(p p.Price 100);高级查询 var results db.SelectProduct(q q.Where(p p.Price 100).OrderBy(p p.Name).Limit(10, 5)); // 分页4.3 特性与扩展 模式迁移通过Migrate()方法处理数据库变更复杂类型支持JSON/XML序列化存储复杂属性存储过程支持通过SqlProc方法调用多数据库支持同一代码可运行在不同数据库上 4.4 适用场景 使用ServiceStack构建的Web服务需要简单快速开发的应用程序偏好简洁API的项目需要支持多种数据库的项目 5. LLBLGen Pro 5.1 框架概述 LLBLGen Pro是商业ORM框架以其强大的设计器和高效运行时著称。它提供三种工作模式 Adapter模式类似传统ADO.NET的工作方式SelfServicing模式类似EF的主动记录模式Entity Framework集成作为EF提供程序 5.2 设计器与代码生成 LLBLGen Pro的核心是其可视化设计器可以 逆向工程现有数据库设计实体关系模型生成高度优化的数据访问代码自定义模板控制生成结果 5.3 查询示例 Adapter模式 var adapter new DataAccessAdapter(); var products new EntityCollectionProductEntity(); var filter (ProductFields.Price 100m) ProductFields.Name.Contains(Pro); adapter.FetchEntityCollection(products, filter);LINQ查询 var metaData new LinqMetaData(adapter); var query from p in metaData.Productwhere p.Price 100morderby p.Nameselect p; var results query.ToList();5.4 性能优化技术 LLBLGen Pro采用多种优化技术 预编译查询计划智能批处理高效的变更跟踪可配置的获取策略 5.5 适用场景 大型企业应用程序已有复杂数据库结构的项目需要可视化设计工具支持的团队对性能有极高要求的场景 6. PetaPoco 6.1 微型ORM设计 PetaPoco是极简风格的ORM核心只有一个C#文件。它提供自动POCO映射和基本的CRUD操作同时支持原始SQL查询。 设计特点 超轻量级单个.cs文件自动POCO映射智能参数绑定简单分页支持 6.2 基本用法 var db new Database(connectionString);// 查询单个对象 var product db.SingleOrDefaultProduct(SELECT * FROM Products WHERE Id0, 1);// 查询列表 var products db.QueryProduct(SELECT * FROM Products WHERE Price0, 50);// 插入 var newProduct new Product { Name New Product, Price 99.99m }; db.Insert(newProduct);// 分页 var page db.PageProduct(2, 10, SELECT * FROM Products ORDER BY Name);6.3 高级特性 T4模板支持生成强类型POCO多结果集查询处理存储过程的多个结果集事务支持简单的事务API异步操作全面的异步方法支持 6.4 适用场景 小型到中型项目需要简单ORM功能的应用程序资源受限的环境快速原型开发 7. RepoDB 7.1 混合ORM设计 RepoDB是Dapper的替代品结合了微型ORM和完整ORM的特性。它提供 基于ADO.NET的原始性能丰富的CRUD操作批量操作和缓存支持可扩展的映射系统 7.2 核心操作 基本CRUD // 插入 var product new Product { Name RepoDemo, Price 49.99m }; var id connection.InsertProduct, int(product);// 查询 var result connection.QueryProduct(p p.Price 10m).ToList();// 更新 product.Price 59.99m; connection.Update(product);// 删除 connection.DeleteProduct(p p.Name RepoDemo);批量操作 var products new ListProduct(); // 填充products... connection.InsertAll(products);7.3 性能特性 批处理合并多个操作到单个调用缓存内置查询结果缓存预编译动态编译和缓存表达式树混合模式混合使用原始SQL和LINQ 7.4 适用场景 需要比Dapper更多功能但仍需高性能的项目大量批处理操作的应用程序需要灵活查询方式的场景 8. 框架比较与选型指南 8.1 功能对比表 特性EF CoreDapperNHibernateOrmLiteLLBLGen ProPetaPocoRepoDB变更跟踪✓✗✓✗✓✗✗LINQ支持✓✗✓有限✓✗有限延迟加载✓✗✓✗✓✗✗原始SQL有限✓✓✓✓✓✓二级缓存扩展✗✓✗✓✗✓迁移工具✓✗扩展有限✓✗✗性能中等高中等高高高高学习曲线中等低高低高低中等 8.2 性能基准 以下是各框架在常见操作上的相对性能比较数值越小越好 操作EF CoreDapperNHibernateOrmLiteLLBLGen ProPetaPocoRepoDB单对象查询1.2x1.0x1.5x1.1x1.1x1.0x1.0x多对象查询(20)1.3x1.0x1.6x1.2x1.2x1.1x1.1x插入单对象1.4x1.0x1.8x1.1x1.2x1.0x1.0x批量插入(1000)2.0x1.2x2.2x1.3x1.1x1.2x1.0x复杂查询1.5x1.0x1.7x1.4x1.3x1.1x1.1x 8.3 选型建议 企业级复杂应用 首选NHibernate或LLBLGen Pro理由功能全面支持复杂领域模型有良好的工具支持 高性能Web应用 首选Dapper或RepoDB理由接近原生ADO.NET的性能适合大量简单查询 快速开发中小型项目 首选ServiceStack.OrmLite或PetaPoco理由简单易用开发效率高 微服务架构 首选Dapper或EF Core理由Dapper适合简单服务EF Core适合需要迁移和复杂查询的服务 已有复杂数据库的项目 首选LLBLGen Pro或NHibernate理由强大的逆向工程和复杂查询支持 9. 高级主题与最佳实践 9.1 混合使用多个ORM 在实际项目中可以混合使用多个ORM框架以发挥各自优势。例如 // 使用Dapper处理大量简单查询 public IEnumerableProduct GetFeaturedProducts() {using var conn new SqlConnection(_config.GetConnectionString(Default));return conn.QueryProduct(SELECT TOP 10 * FROM Products WHERE IsFeatured1); }// 使用EF Core处理复杂领域逻辑 public void UpdateProductInventory(int productId, int adjustment) {using var context new AppDbContext();var product context.Products.Include(p p.Inventory).FirstOrDefault(p p.Id productId);product.Inventory.Stock adjustment;product.Inventory.LastUpdated DateTime.UtcNow;context.SaveChanges(); }9.2 性能优化技巧 Dapper优化 使用Bufferedfalse处理大量数据预编译参数化查询合理使用多映射 NHibernate优化 配置适当的抓取策略使用二级缓存批处理写操作 通用优化 限制查询字段避免SELECT *合理使用分页异步操作 9.3 事务管理 各框架的事务处理示例 Dapper事务 using var connection new SqlConnection(connectionString); connection.Open();using var transaction connection.BeginTransaction(); try {connection.Execute(INSERT INTO Orders..., parameters, transaction);connection.Execute(UPDATE Inventory..., parameters, transaction);transaction.Commit(); } catch {transaction.Rollback();throw; }NHibernate事务 using var session sessionFactory.OpenSession(); using var transaction session.BeginTransaction(); try {session.Save(order);session.Update(inventory);transaction.Commit(); } catch {transaction.Rollback();throw; }9.4 迁移策略 从EF迁移到其他ORM的注意事项 数据模型调整可能需要修改实体类以符合目标ORM约定查询重写LINQ查询可能需要转换为SQL或其他查询语法事务处理理解不同ORM的事务边界性能测试迁移后进行全面性能测试 10. 结论 .NET生态系统提供了丰富的ORM选择从全功能的NHibernate到超轻量级的PetaPoco各有其适用场景。选择ORM时应考虑 项目复杂度简单项目适合微型ORM复杂领域模型需要全功能ORM团队技能考虑团队对不同ORM的熟悉程度性能需求高性能需求可能倾向Dapper等轻量方案长期维护评估框架的活跃度和社区支持 无论选择哪个框架理解其底层原理和正确使用模式都是实现高效数据访问的关键。建议从简单需求开始随着项目复杂度增加逐步评估是否需要更强大的ORM功能。
http://www.zqtcl.cn/news/855618/

相关文章:

  • 如何建设网站山东济南兴田德润官网电子商城官网
  • 网站如何做支付宝接口免费ppt自动生成器
  • 泰安市建设职工培训中心网站官网seo经理招聘
  • 湛江做网站seo网站建设 0551
  • 建站公司 深圳苏州建站公司
  • 网站怎么做引流呢济南网站微信
  • 一个域名可以做几个网站吗wordpress左右翻转页面
  • 天津人工智能建站系统软件wordpress主题没有小工具
  • 网站的备案流程图视频制作素材
  • 劳务公司网站建设方案建设促销网站前的市场分析
  • 网络营销优化培训网站seo置顶 乐云践新专家
  • 小说网站搭建教程wordpress后台图片
  • 付网站开发费计入什么科目网站开发的历史
  • 站长素材ppt模板免费下载网站开发视频教程迅雷下载
  • 建设一个网站怎么赚钱南京江北新区房价走势最新消息
  • 一个网站怎么做软件下载互联网投放渠道有哪些
  • 手机网站建设进度环境设计排版素材网站
  • 网站开发众筹地推网推平台
  • 长沙互联网网站建设wordpress标签id在哪里修改
  • 企业网站的建设 摘要大连网站设计策划
  • 做房地产一级市场的看什么网站网络营销外包推广方式
  • 网站建设基本流程包括哪几个步骤网站建设策划书网站发布与推广
  • 徐州整站优化手机网页端
  • 深圳中瑞建设集团官方网站宁波seo快速优化教程
  • 福田网站制作哪家好昆山企业网站建设公司
  • wordpress快六安网站自然排名优化价格
  • 网站的线下推广怎么做的系统官网网站模板下载安装
  • 北京网站优化推广公司企业网站建设费怎么核算
  • 网站建设vps个人如何做网站推广
  • 小语种网站怎么设计网页制作公司 大连