zoukankan      html  css  js  c++  java
  • 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也被删除了

    剩下的空余时间再来补

  • 相关阅读:
    kafka window环境搭建
    oracle 日期格式化和数据去重
    angular $http服务详解
    Spring框架之beans源码完全解析
    计算机经典书籍100本分享
    Thinking in Java 4th(Java编程思想第四版)文档、源码、习题答案
    Spring框架之事务源码完全解析
    TCP/IP网络协议层对应的RFC文档
    Spring源码深度解析之事务
    Spring框架之websocket源码完全解析
  • 原文地址:https://www.cnblogs.com/yagamilight/p/12839194.html
Copyright © 2011-2022 走看看