伪静态自定义路由与ORM介绍上课笔记 电脑版发表于:2020/5/11 16:34 [TOC] ###伪静态 什么是伪静态:看上去是静态页,其实还是动态的页面,看上去是.html结尾的 但是其实页面还是动态比如本质.cshtml,或者java里边对应的是jsp ####伪静态的作用 普通情况下静态页对seo会友好一点,搜索引擎会优先收录静态页 ####怎么做到伪静态 用自定义路由,自定义路由的配置很简单,在action后面加上需要的后缀即可,比如.html ``` routes.MapRoute( name: "Default", url: "{controller}/{action}.love/{id}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } ); ``` >注意:需要在webconfig里边去配置一个handler,放到后缀的现在否则不行的,访问会被限制 ``` <system.webServer> <handlers> <add name="HtmlFileHandler" path="*.html" verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0"/> </handlers> </system.webServer> ``` ###自定义路由 ####限制以什么开头的 限制action是new开头的就进入这个路由配置 ``` routes.MapRoute( name: "BB", url: "{action}", defaults: new { controller = "News", action = "Index", id = UrlParameter.Optional }, constraints: new { action = "News.*" }//限制action是new开头的就进入这个路由配置 ); ``` 限制action是home开头的就进入这个路由配置 ``` routes.MapRoute( name: "CC", url: "{action}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }, constraints: new { action = "Home.*" }//限制action是home开头的就进入这个路由配置 ); ``` ####限制以什么结尾的 自己想 ### ORM框架EF #### 什么是orm框架 orm为了解决数据库查询的问题,封装好的一些简化我们的对数据库查询的方法 orm: object relationship mapping 对象关系映射 #### 什么是EF ef是微软开发的一个orm的框架,全拼是entity framework #### ORM缺点 orm内部封装了很多方法,里边最终的原理还是那些sqlconnction,sqlcommand.但是由于中间会执行很多操作,所以效率通常情况下都比写原生低,通常封装的越重效率影响越大,所以有些公司为了效率考虑不会用ef,那么写原生,要么就是一些轻封装,既保证效率不受大的影响会更访问我们查询数据库。 > 其实很多人说ef效率慢,有些是自己用得太烂了,如果对里边原理掌握很好,其实也可以写出来一些效率很好的语句 ####EF最基础的查询方法 ``` //方法1:通过sql语句查询 List<Users> users = oapEntities.Database.SqlQuery<Users>("select * from users").ToList(); //方法2:linq List<Users> users = (from u in oapEntities.Users select u).ToList(); //方法3:lamdba形式(个人最喜欢的形式) List<Users> users = oapEntities.Users.ToList(); ``` ####Linq三种形式: - linq to object - linq to sql - linq to xml **linq语法** var result = from u in 数据库 where .... oderby .... ###作业 - 自定义路由限制以某个关键字结尾 - 在伪静态的情况下,起始页也可以被正常访问