Entity Framework Core
Entity Framework CoreEntity Framework Core (简称 EF Core) 是.Net Core 中的 ORM 框架,它可以让开发人员以面向对象的方式进行数据库的操作,从而大大的提升了开发的效率。
1、什么是 ORM?ORM(object relational mapping,对象关系映射).
对象:指的就是 C# 中的对象,而 “关系” 指的就是关系数据库,“映射”: 指的就是在关系数据库和 c# 对象之间搭建一座桥梁,能够让对象模型与关系数据库的表结构之间进行相互转换。我们知道,在.Net 中可以通过 Ado.net 链接数据库然后执行 SQL 语句来从操作数据库中的数据。而 ORM 可以让我们通过操作 C# 对象的方式来操作数据库,比如,使用 ORM,可以通过创建 C# 对象的方式把数据插入到数据库中,而不需要编写 Insert 语句。如下伪代码所示:
12UserInfo userInfo = new UserInfo (){UserName="laowang",Password = "123"};orm.Save (userInfo);
...
日志系统
日志系统 1、什么是日志日志(logging)是程序运行中的 “黑匣子”,在程序出现问题以后,我们可以通过分析日志来查找问题。
在.Net core 中日志可以被记录到控制台,同时还可以使用第三方提供的程序将日志记录到文件,日志服务器等。
日志的级别:
NLog,Log4Net
123456Critical: 最高级别,生死攸关,系统即将崩溃。Error: 错误,优先级别仅次于 Critial, 例如:数据库链接失败 Warning: 警告,有可能会出现问题,但不一定会出现问题。Information: 用于跟踪应用程序的常规流 Debug: 表示在开发和调试过程中短期有用的信息 Trace: 最详细的日志,可能包含敏感信息,不建议在生产环境中使用
级别的使用情况,可以根据个人的具体情况来确定使用。
例如:系统正在链接数据库,可以使用 Information,记录链接这一过程,假设这里我们最多链接 3 次,但是第一次没有链接成功,这里可以使用 Warning,表示可能会出现问题,如果最后一次链接也没有成功,可以使用 Error,表示数据库彻底链接失败.
2、日志的基本使用在这一小结中,我们看一下怎样将日志输出到控制台中。 ...
配置系统
配置系统在专业的软件项目中,一些配置项的值应该是可以修改的,我们不应该把这些值硬编码到代码中,.NET Core 中提供了非常强大的配置系统以简化配置相关代码的编写方法。
1、配置系统的基本使用在传统软件开发中,我们一般把数据库连接字符串等配置项放到配置文件中,比如.NET Framework 中的 Web.config 文件,这样如果需要修改程序连接的数据库,我们只要修改配置文件就可以了。
在.Net core 中不推荐使用 Web.config 了。
但是在.Net core 中的配置系统支持非常丰富的配置方式,例如文件配置 (JSON,XML,INI 等), 注册表,环境变量,命令行等。
.Net core 中读取配置文件中的内容,我们可以通过 IConfigurationRoot 读取配置信息。
下面来看一下基本的使用。
首先,在项目的跟目录下面添加一个 JSON 文件,如文件名为 config.json,该文件中的内容如下所示:
1234567 { "name": "laowang", "proxy": { "a ...
依赖注入
依赖注入一、依赖注入与控制反转是什么控制反转(inversion of control,IoC)是设计模式中非常重要的思想,而依赖注入(dependency injection,DI)是控制反转思想的一种重要的实现方式
IOC:控制反转,是一个理论,概念,思想。描述的:把对象的创建,赋值,管理工作都交给代码之外的容器实现,也就是对象的创建是有其它外部资源完成
控制:创建对象,对象的属性赋值,对象之间的关系管理。
反转:把原来的开发人员管理,创建对象的权限转移给代码之外的容器实现。由容器代替开发人员管理对象。创建对象,给属性赋值。
在传统的软件开发中,代码依赖的对象都是由调用者自己编写代码进行创建和组装的.
如下代码:
12var connStr = ConfigurationManager.ConnectionStrings ["connStr1"] ConnectionString;SqlConnection conn = new SqlConnection (connStr);
以上的代码是数据库的链接代码,通常我们都会写到一个配置文件中。
这里我们自己获取配置文 ...
Linq
1、LinqLinq 是.net core 中提供的一种简化的数据查询的技术。使用 Linq,可以实现几行代码就可以完成复杂的数据查询。
Linq 不仅可以对普通的.Net 集合进行查询,而且在 Entiy Framework Core 中也被广泛的使用,所以必须熟练掌握 ``Linq
一、 Lambda 表达式 1、委托复习 Lambda 表达式是 C# 中的语法,Lambda 表达式在 LINQ、ASP.NET Core 等很多场合都用得非常多.
要理解 Lambda 表达式,先要说一下委托。
委托是一种可以指向方法的类型。
如下面的代码所示:
1234567891011121314151617MyDelegate d1 = SayEnglish;MyDelegate d2 = SayChinese;string age1 = d1 (18);string age2 = d2 (20);Console.WriteLine (age1);Console.WriteLine (age2);static string SayEnglish (int age){ return $"My Age is { ...
面试必问知识点提前预习
委托、事件、反射、面向对象、设计模式
索引、视图、存储过程、触发器、SQL 语句(笔试题)
主键和外键
本篇主要写增删改查代码和主键、外键的设置
实现了 student 和 score 表的创建、添加、删除、修改和查找数据
学生包含成绩(成绩是属于学生的),因此学生是主键、成绩是外键
这样就设置好了主键外键
还有一个重要步骤–设置级联
更新规则和删除规则都要设置级联
栗子 - 假如说学生有一个 classid 表示学生所属班级 student 和 class 之间设置了级联规则,则在删除 classid 为 1 的班级时,classid 为 1 的学生也被删除了
这是设置了主键外键以后,无法随意插入数据,必须与主键 sid 相关联
数据库学习笔记
#Day01 2024.05.28
今日学习知识点
安装 SQLServer 数据库
学会增删改查
各种约束和主键、外键关系
#Day02 2024.05.29
今日知识点
各种约束的代码表示
SQL 语句练习
各种约束的代码表示 12345678910111213141516171819202122232425select * from scoreselect * from studentselect * from teacherinsert into teacher (tsex,tage,tname) values (' 男 ',190,' 老张 ') insert into teacher (tsex,tage,tname) values (' 男 ',19,' 老王 ') insert into teacher (tsex,tage,tname) values (' 男 ',78,' 老赵 ') insert into teacher (tsex,tage,tname) values ( ...
背包问题
01 背包问题有 𝑁 件物品和一个容量是 𝑉 的背包。每件物品只能使用一次。
第 𝑖 件物品的体积是 𝑣𝑖,价值是 𝑤𝑖。
求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。输出最大价值。
输入格式第一行两个整数𝑁,𝑉,用空格隔开,分别表示物品数量和背包容积。
接下来有 𝑁 行,每行两个整数 𝑣𝑖,𝑤𝑖,用空格隔开,分别表示第 i𝑖 件物品的体积和价值。
输出格式输出一个整数,表示最大价值。
数据范围 0<𝑁,𝑉≤10000<𝑣𝑖,𝑤𝑖≤1000
输入样例 123454 51 22 43 44 5
输出样例:18
Solution
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162#include <iostream>#include <algorithm>#include <cmath>#inc ...
C# 基础班学习笔记
#Day1 2024.04.16ctrl + k + c // 注释(可多行
ctrl + k + u // 取消注释
ctrl + k + d // 快速对齐
ctrl + l // 删除行
123456789101112131415161718192021222324252627282930313233343536373839using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace _01_project {internal class Program { static void Main (string [] args) { string name = "战马"; int c ...