11-使用EF操作数据库
本篇博客对应视频讲解
回顾
上一篇教程我们讲了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));
}
最新文章
- angular学习笔记(二十九)-$q服务
- jquery中链式调用原理
- jq 版的tab切换
- 多选按钮(CheckBox)
- day-1
- JavaScript原型链与继承
- 性能优化工具---sar
- 初步了解asp.net运行机制
- vscode-Live Server的使用心得
- [转帖]Linux命令中特殊符号
- Github + Hexo 搭建个人博客
- EasyUI Tree节点拖动到指定容器
- jquery选择器最后一个,倒数第二个元素
- L321 How Technology Is Revolutionizing Health Care
- I Hate It---hdu1754线段树
- 本地git仓库常用操作
- Invalid bound statement (not found): com.example.managerdemo.mapper.SingleTableMapper.selectAllValuesByConditionsNoPage
- PHP 获取中英文混合字符串长度
- ubuntu :安装好了搜狗输入法但是没法用
- NSTimer类的使用