本篇博客对应视频讲解
回顾
上一篇教程我们讲了XML与JSON的序列化问题,我们可以看到序列化实际上也是不同形式的转换,我们通常要以字节流的形式做中转。同时我们也可以看到,对于序列化这种常见的需求,我们可以使用第三方类库更快更好的实现需求。同时也看到了定义式的类,通过C#中特性,可以很方便的定义成员相关的特性。
数据库
数据库是什么这里不多说了,简单说就是组织存储数据用的。我们无时无刻不在获取或处理数据。数据库在各类形式的软件中都发挥重要的作用。 我们今天通过Visual Studio IDE带大家了解一下如何从本地Sql server中查询数据。
实体框架
官方提供了一个实体框架,叫做EntityFramework Core,方便我们在进行对象映射,即把数据库的结构映射到对象(类的表现形式)。然后我们在程序中,仍然是对类的对象进行操作。这样我们就不需要关心数据库是什么样的存储结构了。
安装本地数据库
VIsualStudio Install 安装 Sql Server支持.
使用EntityFramework Core
-
安装官方包 Microsoft.EntityFrameworkCore.SqlServer Microsoft.EntityFrameworkCore.Tools 使用包管理器。 或者使用dotnet命令: https://docs.microsoft.com/en-us/ef/core/miscellaneous/cli/dotnet
-
创建Context类,继承DbContext 覆写OnConfiguring方法,填写连接字符串.. 视图->sql server 对象管理器,连接本地数据库,创建新表。 通过属性,查看连接字符串。 创建实体类,添加到Context。
-
使用命令工具,创建数据库 在VS中打开工具->nuget包管理器->nuget包管理控制台
Add-Migrations
生成创建修改数据库的代码,Update-Database
执行代码生成改动到数据库. -
操作数据库 我们来通过示例来看一下我们如何进行数据库的操作。这和我们使用Linq操作普通对象基本是一致的。
static MyContext _context = MyContext.GetContext(); static void Main(string[] args) { JsonConvert.DefaultSettings = () => new JsonSerializerSettings { Formatting = Newtonsoft.Json.Formatting.None, ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore }; //Add(); Select(); Console.WriteLine("完成"); Console.ReadLine(); } /// <summary> /// 添加 /// </summary> static void Add() { // 创建用户 var user = new User { Email = "abc@outlook.com", Name = "NilTor", Password = "123123" }; // 添加数据 var blogs = new List<Blog>() { new Blog { Author = user, Title = "博客", Content = "内容" }, new Blog { Author = user, Title = "标题2", Content = "博客内容2" } }; _context.Add(user); _context.AddRange(blogs); var re = _context.SaveChanges(); Console.WriteLine(re); } /// <summary> /// 查询 /// </summary> static void Select() { var data = _context.User .Include(m => m.Blogs) .ToList(); Console.WriteLine(JsonConvert.SerializeObject(data)); }