ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

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

2022-08-27 20:04:25  阅读:211  来源: 互联网

标签:name 未完结 C# IQueryable EF MVC 参数 泛型 NET


参考:

《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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有