EF Core入门

这篇具有很好参考价值的文章主要介绍了EF Core入门。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

EF Core是微软官方提供的ORM框架。EF Core不仅可以操作Microsoft SQL Server、MySQL、Oracle、PostgreSQL等数据库,而且可以操作Azure Cosmos DB等NoSQL数据库


一、EF Core环境搭建

前提条件:已经完整安装了Microsoft SQL Server

下面是一个实际操作EF Core的演示

  • 这是项目最终的目录,这里需要关注的就是.cs文件

EF Core入门

  • 首先新建一个.NET Core控制台项目,然后在项目中创建Book实体类
    public class Book
    {
        public long Id { get; set; } //主键

        public string Title { get; set; }//标题
        
        public DateTime PubTime { get; set; }//发布日期
        public double Price { get; set; }//单价

        public string AuthorName { get; set; }//作者名字
    }
  • 为项目安装NutGet包Microsoft.EntityFrameworkCore.SqlServer

EF Core入门
EF Core入门

安装命令

Install-Package Microsoft.EntityFrameworkCore.SqlServer
  • 创建实现了IEntityTypeConfiguration接口的实体类的配置类BookEntityConfig
    class BookConfig : IEntityTypeConfiguration<Book>
    {
        public void Configure(EntityTypeBuilder<Book> builder)
        {
            //表示实体类对应的数据库表的名字为T_Books
            builder.ToTable("T_Books");
            //这里没有配置各个属性子在数据库中列名和数据类型,EF Core将会默认把属性的名字作为列名,并且以属性的类型来推断数据库表中各列的数据类型
        }
    }

这个配置的作用是配置实体类和数据库表的对应关系,现在可能理解的并不深刻,后面就会明白很多了…

  • 创建一个继承自DbContext类的MyDbContext类(名字没有要求)
    class MyDbContext:DbContext
    {
        public DbSet<Book> Books { get; set; }
        

        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            base.OnConfiguring(optionsBuilder);
            optionsBuilder.UseSqlServer("Server=.;Database=demo1;Trusted_Connection=True;MultipleActiveResultSets=true;Encrypt=True;TrustServerCertificate=True;");
        }

        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            base.OnModelCreating(modelBuilder);
            //从当前程序集中加载所有的IEntityTypeConfiguration
            modelBuilder.ApplyConfigurationsFromAssembly(this.GetType().Assembly);
        }
    }

MyDbContext中的Books属性对应的数据库中的T_Books表,对Books的操作将会反映到数据库的T_Books表中。这种传承自DbContext的类叫做“上下文” 。
OnConfiguring方法用于对程序要连接的数据库进行配置,这里的配置

optionsBuilder.UseSqlServer("Server=.;Database=demo1;Trusted_Connection=True;MultipleActiveResultSets=true;Encrypt=True;TrustServerCertificate=True;");

是对本地SQL Server数据库的连接,名为demo1的数据库,如果连接其他的服务器中的数据库,需求去微软文档查看相应的连接字符串要求

  • 通过NuGet为项目安装Microsoft.EnityFrameworkCore.Tools包,这是为了使用EF Core生成数据库工具
Install-Package Microsoft.EnityFrameworkCore.Tools
  • 安装完之后我们执行Add-Migration命令会自动在项目的Migrations文件夹中生成C#代码
    EF Core入门
    这里后面的AddBirth是自行定义的,是一个名字而已
  • 最后执行Update-database命令那些在Migrations 文件夹中用来创建数据库表的代码才会被应用到数据库中
    EF Core入门
    这时候我们就可以来查看数据库中是否有对应的表了

    EF Core入门

二、基本的增删改查

1.增加数据

这里是在Program.cs中操作了

internal class Program
    {
        static async Task  Main(string[] args)
        {
            //创建逻辑上的数据库
            using (MyDbContext myDbContext = new MyDbContext())
            {
                Book b1 = new Book
                {
                    AuthorName = "杨中科",
                    Title = "零基础学C语音",
                    Price = 59.8,
                    PubTime = new DateTime(2019, 3, 1)
                };
                Book b2 = new Book
                {
                    AuthorName = "Robert Sedgewick",
                    Title = "算法(第四版)",
                    Price = 99,
                    PubTime = new DateTime(2012, 10, 1)
                };
                Book b3 = new Book
                {
                    AuthorName = "吴军",
                    Title = "数学之美",
                    Price = 69,
                    PubTime = new DateTime(2020, 5, 1)
                };
                Book b4 = new Book
                {
                    AuthorName = "杨中科",
                    Title = "程序员的SQL金典",
                    Price = 52,
                    PubTime = new DateTime(2008, 9, 1)
                };
                Book b5 = new Book
                {
                    AuthorName = "吴军",
                    Title = "文明之光",
                    Price = 246,
                    PubTime = new DateTime(2017, 3, 1)
                };
                //把对象加入逻辑上的表上面
                myDbContext.Books.Add(b1);
                myDbContext.Books.Add(b2);
                myDbContext.Books.Add(b3);
                myDbContext.Books.Add(b4);
                myDbContext.Books.Add(b5);
                //Update-Database
                await myDbContext.SaveChangesAsync();
            }
        }
    }

2.查询数据

				IQueryable<Book> books = myDbContext.Books.Where(b => b.Price > 80);
                foreach(var book in books)
                {
                    Console.WriteLine(book.Title);
                }
                var Book = myDbContext.Books.Single(b => b.Title == "零基础学C语言");
                Console.WriteLine(Book.AuthorName);

查询就不需要 await myDbContext.SaveChangesAsync();了,在Main方法中执行即可

3.修改数据,删除数据

修改数据和删除数据,都分两步,第一步就是把数据查询出来,再就是对应操作文章来源地址https://www.toymoban.com/news/detail-407267.html

                //修改,要对数据进行修改,首先先查出来对应数据,再修改

                var b = myDbContext.Books.Single(b => b.Title == "数学之美");
                b.AuthorName = "junwu";

                Dog dog = myDbContext.Dogs.Single(b => b.Id == 2);

                myDbContext.Dogs.Remove(dog);
                await myDbContext.SaveChangesAsync();

到了这里,关于EF Core入门的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Big synopsis - 微软官方 JavaScript 入门教程【完结撒花】

    url resource Hi there, welcome to

    2024年02月21日
    浏览(36)
  • 4.1EF Core

    EF Core是微软官方的ORM框架,ORM即对象关系映射,也就是我们可以直接操作C#中的对象就可以完成数据库的操作。 EF Core环境搭建 首先要创建C#对象,用以对应数据库中的表,该C#对象也成为实体类。 根据所用的数据库选择NuGet包,本文使用SQLite数据库,所以安装Microsoft.EntityF

    2024年02月05日
    浏览(37)
  • EF Core并发控制

    并发控制:避免多个用户同时操作资源造成的并发冲突问题。 最好的解决方案:非数据库解决方案 数据库层面的两种策略:悲观、乐观 悲观并发控制一般采用行锁 ,表锁等排他锁对资源进行锁定,确保同时只有一个使用者操作被锁定的资源。 EF Core没有封装悲观并发控制的

    2024年02月10日
    浏览(46)
  • 【EF Core】实体的主、从关系

    假设有以下两个实体: Homework 类表示家庭作业,它并不是独立使用的,而是与学生类(Student)有依赖关系。一位学生有多个家庭作业记录,即 Homework 对象用于记录每位同学的作业的。按照这样的前提,Student 是主对象,Homework 是从对象。 Student 对象有个 Homeworks 属性,用于引

    2024年02月11日
    浏览(44)
  • Net Core中使用EF Core连接Mysql数据库

    Entity Framework Core的前身是微软提供并主推的ORM框架,简称EF,其底层是对ADO.NET的封装。EF支持SQLServer、MYSQL、Oracle、Sqlite等所有主流数据库。 首先是使用时的几个模式的整理及其理解: Code First:根据代码自动创建数据库表结构甚至是数据库,可以支持多库开发,代码较少冗余

    2024年01月24日
    浏览(50)
  • EF Core + MySQL 基本增删改查

    基于EF Core + MySQL的基本增删改查,示例是基于.NET6 + EF Core + MySQL 创建实体和数据库、EFCore 数据迁移项目基础上的内容增加。同时也是对基于Canal实现MySQL 8.0 数据库数据同步项目的验证。 Controllers----添加----控制器,选择api----包含读写操作的API控制器。 将上下文类注入到User

    2024年02月08日
    浏览(47)
  • EF Core 在实际开发中,如何分层?

    分层就是将 EF Core 放在单独的项目中,其它项目如 Asp.net core webapi 项目引用它 这样的好处是解耦和项目职责的清晰划分,并且可以重用 EF Core 项目 但是也会数据库迁移变得复杂起来 创建一个 .NET 类库项目,项目名字为 BooksEFCore 引用以下 Nuget 包 Microsoft.EntityFrameworkCore.Relati

    2024年01月24日
    浏览(44)
  • 使用EF Core创建webapi接口(二)

    有错误欢迎大家给我指正 说明:netcore webapi+net6+EF Core版本,codefirst模式(代码创建数据库) 1.netcore webapi+net6+EF Core版本,dbfirst模式(代码生成数据库)见:使用EF Core创建webapi接口(一)-CSDN博客 2.netcore webapi+net6+EF Core+vue前后端联动版本,见netcore webapi+net6+EF Core+vue3前后端联动-CSD

    2024年02月21日
    浏览(44)
  • Ef Core花里胡哨系列(4) 多租户

    当然,我们要考虑设计问题,例如,切换 Schema 或者改变数据库时, Ef Core 同样也会刷新改实体的缓存,所以,首次查询将会很慢,不适合大表。 在我的上一篇博客中 [Ef Core花里胡哨系列(3) 动态修改实体对应的表(分表)、多租户] 中我们实现了如何分表,同理,我们可以用近

    2024年02月03日
    浏览(35)
  • EF Core预编译模型Compiled Model

    最近还在和 npgsql 与 EF Core 斗争,由于 EF Core 暂时还不支持 AOT,因此在 AOT 应用程序中使用 EF Core 时,会提示问题: 听这个意思,似乎使用 Compiled Model 可以解决问题,于是就又研究了一下 EF Core 的这个功能。 在 EF Core 中,模型根据实体类和配置构建,默认情况下,每次创建

    2024年02月05日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包