编程语言
首页 > 编程语言> > ASP.NET MVC的故事(未完结)

ASP.NET MVC的故事(未完结)

作者:互联网

参考:

《ASP.NET MVC实战》 邹琼俊

20220825

介绍工具(VS,Git,Reflector),VS快捷键和使用技巧

C#语法的特性(都是语法糖)

C#2.0:

2.1 泛型:使用中括号,类似占位符,延迟确定数据类型,有泛型类方法接口委托,如List<string> slt=new List<string>();然后还可以在泛型加约束。(k:开发有经常使用)

2.2 部分类  partial关键字,(k:这个没怎么用过)

2.3 匿名方法,本质是一个委托,看到说是函数式编程

C#3.0:

3.1 自动属性,public int id {get;set;},(k:也是常用)

3.2 隐式推断类型  val关键字,根据语句推断变量的数据类型,常常配合LinQ查询的结果,一般返回ObjectQuery<>或者IQueryable<>类型的对象,想省事也能是常用类型。(k:我一直以为是泛型)

3.3 对象集合初始化器 Users user = new Users(){id=1,name="小k"};(k:曾经装过B的写法,同事都说爽,只是不知道它叫对象集合初始化器)

3.4 匿名类 var f = new {id=1,name="小k"};反编译出来是一个泛型类,有获取初始值的构造函数,私有只读字段。(k:感觉没啥用)

3.5 扩展方法 可以为一个类型添加一些方法,在增加方法时参数加上this,然后就能string s="123"; s.MyAge(2016);(k:感觉挺爽,试试)

3.6 系统内容委托 没看明白

3.7 Lambda表达式 ,已经是比较主流的写法,就是加上=>,常用就是在IEnumerable和IQueryable接口的Where<>(x=>x.id==1)(k:开始不习惯,这什么鬼,后来欲罢不能,一直在用)

3.8 Lambda缩写

3.9 SQO标准查询运算符

上面的Where<>就是这个,还有Select(),Count(),orderBy(),ThenBy(),Join(),Where(),FindAll()

3.10 LINQ

从from开始,select或者group by 结尾的IEnumerable<T>或IQueryable<T>集合,很接近SQL风格的代码,所有有LINQ IN EF

C# 4.0

4.1 可选参数和命名参数(k:也是常用,第一次看到时觉得没有更舒服了,默认值直接写在参数上,如果加多个方法类型参数回调,那就更爽)

public void Say(string name ="小k",int age=1)
{

}

4.2 Dynamic 特性(k:啥也没说),这里提了params关键字,还是很好用的,参数可以放数组这种数目可变参数了,如public void a(params int[] list),但加了不能有其他参数了。

C# 5.0

5.1 async,await关键字(k:这个也看到过,异步编程)

EF(O/R mapping)

返回IQueryable对象或IEnumerable对象(IQueryable是延迟执行,IEnumberable是直接执行放入内存)

3种开发方式:

第一种 DatabaseFirst(数据库优先)

要建edmx模型(k:想起多年前的数据实体集文件,后缀忘了,很冗余的一个组件)

SQLProfiler工具,调试时断点查看语句,选TSQL 

查询语句:条件、排序、分页(skip),聚合,连接,分组

多层架构时,会多次创建EF,会容易不知道最终哪层是最新,容易脏读,用单例也不好,会丢失,采用线程对象,将EF存到HttpContext管道,实现线程唯一

第二种 ModelFirst(模型优先)

也要建edmx模型,更新模型时会先删数据表再重建,(k:我的数据不要了?不建议!!也可能是我理解错,再看看其他解释,或者第一次建新表,是比较方便吧)

第三种 CodeFirst(代码优先)

不建edmx模型,自己建实体类,用FluentAPI或者DataAnnotation配置(k:配好可以理解ORM的映射关系)

步骤:(个人理解)

1.加命名空间using System.ComponentModel.DataAnnotations;能支持13种注释,如KeyAttribute、StringLengthAttribute等

2.web.config的连接数据库字符串<add name="mvcContext"> 加providerName=“System.Data.SqlClient”,否则会报错。

3.建上下文类(就是做承上启下的类,没其他作用),加using Sysmte.Data.Entity,继承DbContext,构造函数继承:base("name=mvcContext"),DbSet<Order> ordre{get;set;}

4.建控制器,然后就自动建新表了!

db.Database.CreateIfNotExists();

5.db.SaveChanges()

再次提到EF创建对象问题。(k:就是要重视)

 方法:建Base控制器,所有继承它,加using System.Runtime.Remoting.Messageing; 用get{ 调用CallContext.GetData("mvcContext"),没有就新建SetData("mvcContext",db) }

标签:name,未完结,C#,IQueryable,EF,MVC,参数,泛型,NET
来源: https://www.cnblogs.com/laokchen/p/16631306.html