- 博客(29)
- 收藏
- 关注
原创 Cesium+Vue3+TS开发环境配置
2.在WebStorm或VS Code中打开文件夹,执行npm i cesium vite-plugin-cesium vite -D。6. 在index.html中设置同样的样式,注意将#cesium-container改为#app,用以去除根div的默认样式。下面提示要引入Token,直接到Cesium官方网站上申请default-token即可。
2025-03-04 16:01:24
243
原创 ASP.NET Core 8.0学习笔记(二十八)——EFCore反向工程
1.原则:DBFirst2.反向工程:根据数据库表来反向生成实体类3.生成命令:Scaffold-DbContext ‘连接字符串’Server=.;
2025-02-25 11:17:00
392
原创 ASP.NET Core 8.0学习笔记(二十七)——数据迁移:Migrations深入与其他迁移命令
注意:主要是比较模型类与模型配置类(IEntityTypeConfiguration接口实现类以及DbContext类)修改前后的差异(修改前的代码保存在快照当中),然后生成对应的迁移脚本。(1)向上迁移、向下迁移:使用迁移脚本,可以对当前连接的数据库执行编号更高的迁移,这个操作叫做向上迁移(Up),也可以执行将数据库回退到旧的迁移,这个操作称为“向下迁移”。(1)当引入的数据模型更改时,添加迁移操作时,EF Core将当前模型与旧模型的快照进行比较,确定差异并生成迁移源文件。
2025-02-23 21:18:42
1029
原创 ASP.NET Core8.0学习笔记(二十六)——EF Core Include导航数据加载——显式加载
1.应用场景:在前面使用Include方法加载依赖实体时,在加载主体实体时,依赖实体也会一并自动加载。但是某些时候我们只需要查询主体实体,没有必要加载依赖实体,或者说只有我们需要依赖实体时再去加载依赖实体。这就需要使用显式加载。
2024-12-09 16:44:07
524
原创 ASP.NET Core8.0学习笔记(二十五)——EF Core Include导航数据加载之预加载与过滤
要通过导航属性来访问数据,需要在DbSet的Include()方法来加载子数据。注意:使用Include加载数据只是指定在加载主体的时候把依赖实体一并带出来并赋值,返回的实体依旧是最开始指定的DbSet。例如,在上面的省-市-县三级联动查询中,假如我只想查询辽宁省大连市的所有数据,那么就需要在调用Include()时指定数据过滤。原因是这里的导航属性Post只是起到一个完成约定配置的作用,其本身在主体数据加载时并不会自动加载关联数据。(3)延迟加载:在访问导航属性时,以透明的方式加载关联数据。
2024-12-07 16:50:28
802
原创 ASP.NET Core8.0学习笔记(二十四)——EF Core级联插入与删除
1.级联插入:在含有导航属性的实体(主体实体)中可以对实体进行级联插入。即在创建主体实体时直接把依赖实体进行赋值,此时只需要执行一次插入操作即可将主体实体与依赖实体同时入库。同时,导航属性所映射的字段将会被自动赋值。1.当两个实体建立联系时,只要删除主体实体,其相关联的依赖实体将会自动被删除。依赖实体Post中的导航属性BlogId被自动赋值。
2024-12-07 16:43:30
506
原创 ASP.NET Core8.0学习笔记(二十三)——EF Core自引用
1.在常见的树状目录中,其结构如下:每一个菜单可能有父级菜单,也可能有子菜单。但是无论是哪一级菜单,他们都是同属于菜单对象。将这个菜单对象使用代码进行描述:在上面的代码中,主体实体是Menus,但是其依赖实体依旧还是Menus,且导航属性Menus与List均指向自己,也就是“自己引用自己”,在数据库中形成了“自连接”关系。此之谓“自引用”。
2024-10-22 09:37:46
558
原创 ASP.NET Core8.0学习笔记(二十二)——单向导航属性
也就是说,我们希望导航属性只要能通过A“单向”的找到B即可,B并不需要任何属性去“发现”A。(2)使用FluentAPI进行配置依旧使用HasXXX()、WithXXX,其与双向导航属性配置的区别就在于HasXXX/WithXXX只需要指定一个方法的参数,也就是含有导航属性的实体的参数即可,另外一个不需要给定任何参数。1.什么是单向导航属性:在两个关联实体A与B中,A中含有 导航属性b能够找到关联的B实体或实体集合,但是B中不含有任何能够找到主体实体A的导航属性。因此,可以使用单向导航属性来解决这些问题。
2024-10-18 16:45:33
628
原创 ASP.NET Core8.0学习笔记(二十一)——EFCore关系配置API
当我们需要指定一个字段作为外键,而这个外键又不符合以上四种约定时,就需要在IEntityTypeConfiguration实现类(对应的配置类)中使用Fluent API直接配置外键。理论上可以通过API直接指定一个属性,然后再配置外键。但是由于使用API的情况下导航属性的名称可能无法符合默认约定。而在默认的约定中,除了自动生成外键以外,更重要的是可以通过引用或集合导航属性来指定两个实体之间是一对一还是一对多的关系。因此如要使用API,首先应该明确:(1) 使用哪两个实体中的哪两个属性作为导航属性。
2024-10-15 16:15:18
1223
原创 ASP.NET Core8.0学习笔记(二十)——EFCore导航属性与外键
数据库表(实体)之间的关系:一对一(学生-成绩)、一对多(学生-科目)、多对多(教师-班级)。数据库中,每一个实体可以由主键唯一标识,而每一条“关系”则由外键进行标识。(1) 外键分为逻辑外键与物理外键。逻辑外键在数据库中不存在任何体现与约束,所有约束由业务代码进行控制,方便管理与迁移;物理外键在数据库中直接表现为外键列,需要严格按照数据库约束进行增删操作。EF Core不仅支持单实体操作,更支持多实体之间的关系操作。通过关系操作实体主要由两大途径:一是通过逻辑/物理外键手动编写关联查询;
2024-10-14 21:56:27
1311
原创 ASP.NET Core8.0学习笔记(十九)——EF Core DbSet
1.DbSet提供了通过DbContext对表进行查询操作的路径。DbSet对应的属性名称将默认映射为实体T的表名。2.使用DbSet进行查询的方法:(1)直接在DbContext中创建对应的DbSet属性(2)使用DbSet DbContext.Set方法操作数据表。3.在DbSet中对于数据对象进行的任何操作,都将保存在内存中,只有当SaveChanges()方法被调用时,才会将数据变化提交给数据库。
2024-09-23 10:09:41
1143
原创 ASP.NET Core6.0/8.0学习笔记(十八)——索引配置
1.使用索引可以使得基于列(或一组列)的查找更加高效2.索引的分类:聚集索引、非聚集索引(1)聚集索引是物理索引,索引顺序与物理存储顺序一致;基于数据行的键值(2)非聚集索引是逻辑索引,索引顺序与物理顺序不一致。具有完全独立于数据行的结构(3)唯一索引:用作索引的字段中各个数据必须是唯一的,不得重复(相当于普通索引加一层唯一性约束)3.一个表中可以有多个非聚集索引,但是聚集索引只能有一个。因此在建立聚集索引时一定要确保表中没有多余的聚集索引。
2024-08-18 22:20:33
352
原创 ASP.NET Core 6.0/8.0学习笔记(十七)——Fluent API主键配置
使用Guid类型做主键的时候,不能把主键设置为聚集索引。:默认约束指定在插入操作中如果没有提供输入值时,系统会自动指定插入值,即使该值是NULL;当必须向数据表中加载一行数据但不知道某一列的值,或该值尚不存在,此时可以使用默认值约束。例如,新建一个Bird类,在这个类中有Id、Name、Number三个属性,默认主键字段为Id。:检查约束对输入列或者整个数据表中的值设置检查条件,以限制输入值,保证数据库数据的完整性。1.默认主键:根据约定,字段名为“Id”或“类名/表名”+Id将被配置为实体的主键。
2024-07-27 11:55:07
517
原创 ASP.NET Core6.0/8.0学习笔记(十六)——EF Core配置方式以及表与属性的配置
(4)名字为Id的属性为主键,如果主键为short,int或者long类型,则默认采用自增字段,如果主键为Guid类型,则默认采用默认的Guid生成机制生成主键值。(3)配置类中的代码也可以写入DemoDbContext类(数据库上下文类)中,但是表一多,代码就会很多,这个类就会显得臃肿。例如:我想让Book这个实体类中存在一个名为Age的属性,但是不需要对数据库进行修改,可以在配置类中使用这个方法。(2)数据表列的名字采用实体类属性的名字,列的数据类型采用和实体类属性类型最兼容的类型。
2024-07-24 09:59:58
931
原创 ASP.NET Core 6.0/8.0学习笔记(十五)——DbContext详解
详细阐述了在EntityFramework Core中DbContext的使用以及其他注意事项
2024-06-19 10:06:15
2336
原创 ASP.NET Core 6.0/8.0学习笔记(十四)——使用EF Core实现基本增删改查
使用EntityFramework完成最基本的增删改查操作
2024-06-16 22:54:26
925
原创 ASP.NET Core 6.0/8.0学习笔记(十三)——ORM/EF Core概述与开发环境搭建
简要介绍了以下内容,包括:ORM的概念、EntityFramwork Core的概念以及开发环境搭建、常见问题处理等
2024-06-15 16:38:24
2252
原创 ASP.NET Core 6.0/8.0学习笔记(十二)——服务的生命周期
服务的本质就是一个或一组被DI容器管理的对象,每一次应用程序都要从DI容器中请求这个对象;服务的生命周期其实就是研究这个对象在容器中被请求时返回的究竟是什么样的对象。所有的可能性一共三种:(1) 无论在哪里请求,容器提供的都是一个全新的对象(2)无论在哪里请求,容器提供的都是不变的同一个对象(3)只有在同一个区域请求,容器才会返回同一个对象,不同的区域返回的是不同的对象以上三种可能性,分别对应服务的瞬时(Transient)、单例(Singleton)以及范围(Scope)生命周期。
2024-06-12 15:32:31
657
原创 ASP.NET Core 6.0/8.0学习笔记(十一)——.NET中的DI与服务注册
(先将所有要注册的服务对象放到这个ServiceCollection集合中)调用ServiceCollection的BuildServiceProvider()创建的ServiceProvider对象,可以获取到BuildServiceProvider()之前ServiceCollection中的对象,也就是为业务逻辑所提供的对象。3.服务容器:负责管理注册的服务(把准备好的实体类、方法等添加到这里,由容器进行接管)2.注册服务:提前准备好那些服务(例如实体类、方法的实现等等)添加到服务容器中。
2024-06-07 09:31:54
409
原创 ASP.NET Core6.0/8.0学习笔记(十)—依赖注入概述
最重要的不同:不需要程序员去手动管理各种对象,只要这个对象符合某个标准即可(比如说电压是220V),框架会自动给用户接入220V的电,而不用在接电时去关心这个电是怎么来的。我需要获取一个对象A,或者是完成某一个固定逻辑A,这个对象A的创建需要对象B、C、D、E的参与并调用对应的API来完成创建。(1)类库:直接提供对应的API,整个流程由程序员在自己的应用中手动编码完成,包括B、C、D、E对象的创建以及API的调用。1.什么是依赖:若在一个类A的成员中使用了另一个类B的对象,则称类B是A的依赖项。
2024-06-05 14:27:42
1711
原创 ASP.NET Core6.0学习笔记(九)——Enumerable
1.Enumerable是“序列”。它与集合是两个概念。LINQ中所有的内容都是针对于某一元素序列执行操作。2.在LINQ中,其核心思想就是“如何生成序列的下一项”——创建一个枚举器,获取输入并创建枚举3.LINQ的工作机制:“流式处理”——从集合中逐个拿取数据并执行对应的操作。若碰到Where等语句,不符合条件的数据将不会被拉取到内存当中,提升性能。保证了LINQ不会因为过大的数据量而崩溃。流式处理运算符将持续读取源元素直到可以生成结果元素。这意味着可能要读取多个源元素才能生成一个结果元素。
2024-06-04 10:54:49
904
原创 ASP.NET Core 6.0学习笔记(八)—LINQ查询语法
注意:在LINQ中,内连接与左外连接的区别就是DefaultIfEmpty()方法,内连接遇到Empty会直接不返回这条数据,但是在左外连接中会需要返回对应的数据;注意,在原始数据中,Category中CategoryId为4的数据以及Product中CategoryId为7的数据没有匹配,所有没有出现在结果集当中。唯一的区别在于组连接在内连接的基础上添加了into关键字,将连接后的数据按照第一个表数据进行分组。左外连接与组连接的区别是在组连接的into的基础上添加了DefaultIfEmpty方法。
2024-06-03 14:51:13
508
原创 ASP.NET Core6.0学习笔记(七)—降维投影SelectMany
这两个函数的参数的意义同前。将序列中的每一个元素按照selector指定的函数投影到到IEnumerable中,然后对于IEnumerable中的每一个元素,都执行第三个参数指定的函数,并将执行函数后返回的结果组合为一个简单的一维序列返回。将序列中的每一个元素映射到IEnumerable中,并能够额外接收一个int型参数index,即当前元素的索引值,并将索引值与序列作为参数执行第二个参数所指定的函数,返回最终结果。应用场景2:将集合中的每个元素映射为一个集合,并将这些映射后的集合合并为一个新的集合。
2024-05-31 10:15:46
1050
原创 ASP.NET Core6.0学习笔记(六)—LINQ投影函数Select
1.Select()方法用于对数据进行查询,参数为Lambda表达式,可以将某一集合中的某些项提取出来,经操作后组合成新的集合。IEnumerable 集合对象.Select((x,index)=>Lambda expression)IEnumerable 集合对象.Select(x=>Lambda expression)数据库上下文对象名(集合).表名.Select(Lambda expression)对象名=>new(别名1=对象名.列名1,别名2=对象名.列名2……
2024-05-30 15:41:38
554
原创 ASP.NET Core 6.0学习笔记(五)—LINQ排序与分组
1.数据分组的API:IEnumerable GroupBy(Lambda expression) :分组所需参数为Lambda表达式,返回值是IEnumerable ,即返回值是分完之后的组(IGrouping)所构成的集合(IEnumerable)。1.在LINQ中,可以根据多个条件依次进行排序,例如,根据Salary字段升序排序后,又按照Age字段降序排序。
2024-05-29 11:36:07
1031
原创 ASP.NET Core 6.0学习笔记(B站杨中科版)(四)—LINQ筛选与查询
1.方法声明:IQueryable WhereIf(this IQueryable source,bool condition,Expression predicate)2.参数:(1)this IQueryable source:扩展方法所在类型(2)bool condition:执行条件,若为真执行后面的predicate表达式,反之不执行。
2024-05-28 09:51:00
1928
原创 ASP.NET Core 6.0 学习笔记(B站杨中科版)(三)—LINQ简介
其中,Where(Lambda expressiom)是一个扩展方法,它扩展了数组与集合中的相关方法。该方法会遍历数组中的每个元素,并调用a=>a>4表达式来判断表达式的结果是否为true。若为true,则返回这个元素。2.LINQ的背景:LINQ到底做了什么——手动实现LINQ。1.目的:使得数据处理“傻瓜化”需求:取出数组中所有大于4的数。
2024-05-27 15:33:26
285
原创 ASP.NET Core 6.0 学习笔记(B站杨中科版)(二)
一、 为什么要使用异步编程本质:IO跟不上CPU,拖慢程序运行进程关键字:async await上面两个关键字只是编译器功能,编译器会使用Task类创建代码。若不使用这两个关键字,则使用Task类也可以完成相关功能注:异步不等于多线程二、async、await的基本使用异步方法什么是异步方法:通常是借助于线程或任务,在后台运行的方法,并不会阻塞调用线程。通俗来说就是异步方法借助这两个关键字格外开了一个线程去执行方法体内的代码。
2023-08-27 22:06:14
302
原创 ASP.NET Core 6.0 学习笔记(B站杨中科版)
引入NuGet包,实际上就是引入外部的.dll文件。微软提供的NuGet平台可以引入在.NET 平台上发布的.dll,也就是“NuGet程序包”,可以有效解决.dll版本不匹配等相关问题,提升开发体验该功能类似于JavaScript的npm与Java的Maven。
2023-08-26 22:10:59
481
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人