Sqlite3是个特别好的本地数据库,体积小,无需安装,是写小控制台程序最佳数据库。NET Core是同样也是.NET 未来的方向。
**硬件支持型号 点击 查看 硬件支持 详情**
DTU701 产品详情
DTU702 产品详情
DTU801 产品详情
DTU802 产品详情
DTU902 产品详情
G5501 产品详情
ARM dotnet 编程
创建C#控制台应用(具有.NET6),项目命令sqlite。
Nuget安装
-
Microsoft.EntityFrameworkCore.Sqlite
-
Microsoft.EntityFrameworkCore.Sqlite.Core
-
Newtonsoft.Json
EF:ORM操作框架,但不包括数据库基本操作(我感觉默认自带sql server数据库操作) Sqlite:Sqlite数据库操作,EF接管
ORM解释 ORM,又称对象关系数据库。 在ORM里面认为,我们操作的对象属性和数据库里面的列的定义是对应的。 比如一个Student类,有id,name,age,sex等属性,那么我们C#程序中的类也有id,name,age,sex等属性。 而且我的类名和你的表名完全一致,我的数据类型和你的数据库也有对应关系 例如C#的string在数据库里面有varchar(50),varchar(max),nchar(10)等
sqlite上 添加->新建文件夹DB
DB 添加->类 ORMContext
ORMContext是数据库的上下文。
ORMContext.cc 中的内容如下:
namespace sqlite.DB
{
//继承DbContext,让EF接管 ,ORMContext数据库上下文
public class ORMContext : DbContext
{
public DbSet<Student> Students { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
//base.OnConfiguring(optionsBuilder);
//数据库连接字符串
optionsBuilder.UseSqlite("Data Source=blogging.db");
}
}
public class Student
{
//主键
[Key]
// 自动递增
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public string Name { get; set; }
public int Age { get; set; }
public string Sex { get; set; }
}
}
Program.cs中 我们 对数据库 进行创建、保存、查、排序、增、删、改等操作,程序如下:
ORMContext _ORMContext = new ORMContext();
//如果没有数据库,则自动创建
_ORMContext.Database.EnsureCreated();
var i = 0;
for (i = 0; i < 10; i++)
{
_ORMContext.Students.Add(new Student()
{
Name = "小李" + i,
Age = i,
Sex = "女"
});
}
//保存数据库更新
_ORMContext.SaveChanges();
//系列化打印数据
//var res = _ORMContext.Students.Where(t => t.Sex == "女").ToList();
//Console.WriteLine(JsonConvert.SerializeObject(res));
Console.WriteLine("所有:");
var res = _ORMContext.Students.Where(t => true).ToList();
res.ForEach(t => {
Console.WriteLine("Name:"+t.Name+" Age:"+t.Age+" Sex:"+t.Sex);
});
Console.WriteLine();
/*查*/
Console.WriteLine("查List:");
//var ListRes = _ORMContext.数据表.Where(t => 判断条件).ToList();
var ListRes = _ORMContext.Students.Where(t => t.Name == "小李1").ToList();
Console.WriteLine(JsonConvert.SerializeObject(ListRes));
Console.WriteLine("查第一个,如果没有则返回null:");
var res1 = _ORMContext.Students.Where(t => t.Name == "小李1").FirstOrDefault();
Console.WriteLine(JsonConvert.SerializeObject(res1));
//排序
//OrderBy: 升序
//OrderByDescending:降序
Console.WriteLine("排序:");
var res2 = _ORMContext.Students.Where(t=>t.Name == "小李1").OrderByDescending(t => t.Id).ToList();
Console.WriteLine(JsonConvert.SerializeObject(res2));
/*增,删,改
由于ORM是对象数据模型,所以所有的数据操作都是对一个完整的对象进行操作。
EF具有缓存追踪的设置,如果你查询出来的数据进行了修改,然后保存缓存的话,就会同步更新。
*/
// 增
_ORMContext.Students.Add(new Student
{
Name = "小李",
Age = i,
Sex = "男"
});
_ORMContext.SaveChanges();//保存缓存操作
// 改
var res3 = _ORMContext.Students.Where(t => t.Age == 0).ToList();
//将所有年龄为0的人的名字改成"修改名称"
res3.ForEach(item => {
item.Name = "修改名称";
});
_ORMContext.SaveChanges();//保存缓存操作
// 删
//删除所有年龄小于5岁的人
Console.WriteLine("删除所有年龄小于5岁的人");
var res4 = _ORMContext.Students.Where(t => true).ToList();
res4.ForEach(t => {
if (t.Age < 5)
{
_ORMContext.Students.Remove(t);
}
});
_ORMContext.SaveChanges();//保存缓存操作
Console.WriteLine("剩余的名字:");
var res5 = _ORMContext.Students.Where(t => true).ToList();
res5.ForEach(t => {
Console.WriteLine(t.Name);
});
//sql语句执行
//sql查询
//实体查询
//var res5 = _ORMContext.Database.SqlQuery<Student>("Select * from Students").ToList();
///sql执行/增删改
//_ORMContext.Database.ExecuteSqlCommand("update Students set sex = '女' where age = 6");
Console.WriteLine("Hello, World!");
Console.ReadLine();
执行结果如下: