efcore 学习

新开一个博客来写一下ef core的学习过程 这个博客内容会跟着官网走 具体可见官网https://docs.microsoft.com/zh-cn/ef/core/get-started/?tabs=netcore-cli。下面直接开始

EF Core 入门

在本教程中,将创建一个 .NET Core 控制台应用,该应用使用 Entity Framework Core 对 SQLite 数据库执行数据访问。你可在 Windows 上使用 Visual Studio,或在 Windows、macOS 或 Linux 上使用 .NET Core CLI 来学习本教程。这是官网原话。我这里创建项目会使用vs而不是控制台,数据库使用sqlserver。

创建欣项目 步骤已经很清晰了

安装 Entity Framework Core

在这里官网用的是nuget管理器控制台命令行Install-Package Microsoft.EntityFrameworkCore.Sqlite去下载相关的包。我要使用的是sqlserver 所以我需要引用sqlserver相关的包。在项目上右击 点击股那里nuget程序包

 弹出如下页面 点击浏览 输入entityframeworkcore  下载红圈标记的两个包  直接鼠标上去 点击右边箭头下载  弹出框选择我接受

 安装完毕 多了两个东西

创建模型

public class BloggingContext : DbContext
{
public DbSet<Blog> Blogs { get; set; }
public DbSet<Post> Posts { get; set; }

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer("Server=.;DataBase=EFStart;Uid=sa;Pwd=123456");
}
}

public class Blog
{
public int BlogId { get; set; }
public string Url { get; set; }

public List<Post> Posts { get; } = new List<Post>();
}

public class Post
{
public int PostId { get; set; }
public string Title { get; set; }
public string Content { get; set; }

public int BlogId { get; set; }
public Blog Blog { get; set; }
}

可以看到 目前并没有数据库EFStart

 

 接下来就来创建数据库 点击工具 nuget包管理器 程序包管理器控制台

出现如下窗口

输入命令Add-Migration InitialCreate 回车

 可以看到右边多出来一个文件夹 这个文件夹里面就是哟个来存放每次的数据库操作带来的改变相关 有兴趣可以打开看一下

接下来 输入命令  Update-Database 回车 将迁移应用到数据库 数据库就会自动生成了

 

 数据库已经自动创建好了 此时表都是空的

创建、读取、更新和删除

把main方法替换为如下代码

static void Main(string[] args)
{
using (var db = new BloggingContext())
{
// Create
Console.WriteLine("Inserting a new blog");
db.Add(new Blog { Url = "http://blogs.msdn.com/adonet" });
db.SaveChanges();

// Read
Console.WriteLine("Querying for a blog");
var blog = db.Blogs
.OrderBy(b => b.BlogId)
.First();

// Update
Console.WriteLine("Updating the blog and adding a post");
blog.Url = "https://devblogs.microsoft.com/dotnet";
blog.Posts.Add(
new Post
{
Title = "Hello World",
Content = "I wrote an app using EF Core!"
});
db.SaveChanges();

// Delete
Console.WriteLine("Delete the blog");
db.Remove(blog);
db.SaveChanges();
}
}

分别实现了创建一个Blog数据 查询一个Blog数据 修改Blog数据并且添加post数据 以及删除blog数据。

所有代码都注释掉 只留下创建数据的代码 执行

添加成功了 接下来  只留下查询的代码

这里只查询不打印东西看不出效果 稍微改一下打印出博客的地址

Console.WriteLine("Querying for a blog");
var blog = db.Blogs
.OrderBy(b => b.BlogId)
.First();
Console.WriteLine(blog.Url);

成功打印

接下来 read和update的代码放出来  执行  因为更新的前提条件是系统必须知道你要更新的是哪一个数据  所以这里更新的就是前面read查询到的那条数据  并且之后往post表添加了一条数据

执行结果

 下图可见 地址改变了 并且添加了一条post

 删除同理 必须知道要是出的数据 所以应该把读取数据的代码留下来

执行

 删除成功 因为主外键原因 post也被删除了

剩下的空余时间再来补

原文地址:https://www.cnblogs.com/yagamilight/p/12839194.html