首页 > 编程语言 >ASP.NET MVC的故事

ASP.NET MVC的故事

时间:2022-08-27 19:45:02浏览次数:53  
标签:ASP 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) }

标签:ASP,name,C#,IQueryable,EF,MVC,参数,泛型,NET
From: https://www.cnblogs.com/laokchen/p/16631306.html

相关文章

  • ASP中把数据导出为Excel的三种方法
     方法一:用excel组件这种方法利用Excel组件直接导出excel文件,要求服务器端安装有微软office(Excel)程序,否则无法运行。完整示例如下:Setconn=server.CreateObject("adod......
  • Netty网络编程-服务端启动
    1、Netty的Handler模型2、服务端代码示例根据模型图可以更好的理解ServerBootstrap引导类设置Netty的属性。publicclassTimeServer{privateintport;pub......
  • win10 命令行启动 net6 程序
    dotnetrundotnetrun--urls=http://*:8080//urls指定ip和端口dotnetwatchrun//watch监听程序修改,一旦修改则重新启动dotnetwatchrun--urls=http://*:8080dotnet......
  • 尚硅谷-Netty篇
    学习内容P1P43,P110P116,中间章节好枯燥啊,暂时用不到,先跳过了IO模型参考:https://blog.csdn.net/lzb348110175/article/details/98941378学习链接:https://www.bilibili.co......
  • Kubernetes安装记录
    一、系统规划3个节点机器名IPk8s-master192.168.1.57k8s-node58192.168.1.58k8s-node59192.168.1.59Pod网段172.31.0.0/16版本选择Docker:19......
  • 04Spring MVC入门
    SpringMVC三层架构表现层业务层数据访问层MVC(处理表现层)Model:模型层View:视图层Controller:控制层底层请求方式在controller中添加@RequestMapping("/......
  • NetCore 入门 (二) : 文件系统
    1.QuickStartASP.NETCore应用具有很多读取文件的场景,如读取配置文件、静态Web资源文件(js/css/image)、MVC应用的View文件、以及直接编译到程序集中的内嵌资源文件。这些......
  • NetCore 入门 (四) : 配置数据源
    1.介绍一般来说,定义一种配置源,需要经过如下三个步骤:[必须]实现IConfigurationSource接口[必须]实现IConfigurationProvider接口[可选]在IConfigurationBuilder接......
  • NetCore 入门 (三) : 配置系统
    1.QuickStart配置系统(Configuration)具有如下特点:提供统一的方式读取配置数据支持多样化的数据源支持配置数据的热更新1.1Nuget包Microsoft.Extensions.Configu......
  • NetCore 入门 (六) : 日志系统
    1.QuickStart1.1NuGet包Microsoft.Extensions.Logging.Abstractions;//抽象依赖包Microsoft.Extensions.Logging;//默认实现Microsoft.Extensions.Logging.Confi......