《ASP.NET MVC 企业级实战》
========== ========== ==========
[作者] (中) 邹琼俊
[出版] 清华大学出版社
[版次] 2017年04月 第1版
[印次] 2019年08月 第6次 印刷
[定价] 89.00元
========== ========== ==========
【第01章】
(P021)
只有在 Lambda 有一个输入参数时,括号才是可选的,否则括号是必需的。
使用空括号指定零个输入参数。
【第02章】
(P037)
EDM 中利用特性来标识实体映射到具体数据数据库中的 TableName ,属性对应的具体表的 ColumnName ,还有主键、外键、默认值等,都用特性来标识。然后通过反射技术, 从 EF 中 edmx 元数据获取数据库表的结构的描述,再根据增删改查操作方法,就可以产生对应的 SQL 语句,然后发送给 ADO.NET 负责从数据库中读取数据,返回给我们的 EF 。
(P042)
禁用延迟的方法有 ToList() 、 FirstOrDefault() 、 Include() 等。
(P048)
IQueryable 其实继承了 IEnumerable 。
EF 不支持复杂类型 (如实体) 的直接检索,只能用简单类型,比如常用的标量类型 string 、 int 和 guid 。
【第03章】
(P083)
控制器的约定大于配置 :
1. Controller 放到 Controllers 文件夹中,并且命名方式以 Controller 结尾;
2. 每个 Controller 都对应 View 中的一个文件夹,文件夹的名称跟 Controller 名相同。 Controller 中的方法名都对应一个 View 视图 (非必须,但是建议这么做) 而且 View 的名字跟 Action 的名字相同;
3. 控制器必须是非静态类,并且要实现 IController 接口;
4. Controller 类型可以放到其他项目中;
视图的相关约定 :
1. 所有的视图必须放到 Views 目录下;
2. 不同控制器的视图用文件夹进行分割,每个控制器都对应一个视图目录;
3. 一般视图名字跟控制器的 Action 相对应 (非必须) ;
4. 多个控制器公共的视图放到 Shared 目录中;
【第04章】
(P085)
dynamic 型与 object 型的区别是在使用时它会自动根据数据类型转换,而 object 型则需要自己去强制转换。
(P087)
ViewBag 其实就是 ViewData ,只是多了一层 Dynamic 控制,可以说它是另一种访问 ViewData 的方式。理论上 ViewBag 要比 ViewData 慢一点点,但是几乎可以忽略,所以使用任何方式完全取决于个人的爱好。
(P090)
当前台的 C# 代码有多行时,如果这些代码是连续的,中间没有 HTML 代码隔断,那么只需要开头的一个 @ 符号即可;否则 HTML 代码之后被隔断的 C# 代码开头需要加上 @ 符号。
(P115)
@Html.Editor / @Html.Display 可以通过读取特性值生成 HTML 。
【第05章】
(P134)
Routing 的作用是 :
1. 匹配传入的请求 (不匹配服务器物理文件),并将请求映射到 “控制器” 的具体操作 “Action 方法” 和 “参数” 中;
2. 调用并执行对应控制器类的 Action 方法;
{controller} 和 {action} 是特定参数名,不能改。
(P135)
不能有两个连续的 URL 参数,参数之间必须有字符隔开。
(P141)
推荐使用 @Scripts.Render 的形式,因为它支持压缩合并和服务器缓存。
(P147)
区域路由注册优先于普通路由注册。
【第06章】
(P181)
@Html.AntiForgeryToken() 只能添加在 Html.BeginForm() 形式声明的表单中,纯 HTML 的 <form> 标签表单是不行的。
【第07章】
(P204)
一个 Session 代表一个单线程的单元操作。 ISessionFactory 是线程安全的,很多线程可以同时访问它。 ISession 不是线程安全的,代表与数据库之间的一次操作。 ISession 通过 ISessionFactory 打开,在所有的工作完成后需要将其关闭。 ISessionFactory 通常是一个线程安全的全局对象,只需要被实例化一次。
SessionFactory 的创建很占用系统资源,一般在整个应用程序中只创建一次。
(P207)
NHibernate 映射文件以 .hbm.xml 结尾。
【第09章】
(P256)
没必要花太多的时间去钻研工作中用不到的东西,因为一个人的时间和精力都是有限的,说句现实的,你学的任何东西、只有真正用到了、有了产出才能体现出价值,对企业而言尤其如此。
(P262)
WCF 是 Windows 平台上开发分布式应用最佳的实践方式。
(P270)
每个 WCF 服务必须实现至少一个服务契约。使用服务契约必须要引用命名空间 System.ServiceModel 。
(P271)
ServiceHost 类型 : 当 IIS 和 WAS 作为宿主程序时, IIS 和 WAS 会自动创建 ServiceHost 类型。
(P279)
使用 js 的异步操作不支持跨域访问,也就是说 js 异步调用操作必须和 WebAPI 在同一个站点上。
(P307)
在进行技术选型的时候,不要追求最新的,而应当选择既能满足需求又运行非常稳定的。因为最新的技术不但相关资料少,而且也没有经过项目的实际验证,学习成本很高,风险较大。
【第10章】
(P325)
搜索引擎一般不会执行 JS 、不会发 Post 请求、不会提交表单。
(P327)
SQL Server 的专业版才支持全文检索功能。
(P333)
永远不要对 bin / debug 下的东西做直接修改,而是要改 “源文件” 。
(P356)
尽量不要用 JavaScriptSerializer ,因为性能差,完全可以用 Newtonsoft.Json 来代替。
【第11章】
(P366)
框架则是各种设计模式的集合。设计模式是解决某一类问题的方法。
【第12章】
(P434)
在清楚需求之后,我们首先要做的就是技术选型。
(P435)
使用 EF Database First 方式需要注意的是 : 所有表必须设置主键,表和表之间的关系必须通过主外键进行关联。
(P439)
新建解决方案文件夹可以打包一些项目,让整个项目变得更清晰。
(P459)
DbContext 默认支持事务,当实例化一个新的 DbContext 对象时会创建一个新的事务,当调用 SaveChanges 方法时事务会提交。
(P465)
jQuery EasyUI 是一组基于 jQuery 的 UI 插件集合,而 jQuery EasyUI 的目标就是帮助 Web 开发者更轻松地打造出功能丰富并且美观的 UI 界面。开发者不需要编写复杂的 JavaScript ,也不需要对 CSS 样式有深入的了解,需要了解的只有一些简单的 HTML 标签。