EF Core基础入门教程

 更新时间:2022年04月13日 15:01:34   作者:Ruby_Lu  
这篇文章介绍了EF Core的基础入门教程,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

EF Core 是一个ORM(对象关系映射),它使 .NET 开发人员可以使用 .NET对象操作数据库,避免了像ADO.NET访问数据库的代码,开发者只需要编写对象即可。

EF Core 支持多种数据库引擎:

  • Microsoft SQL Sever
  • SQLite
  • Npgsql
  • MySQL
  • ......

1.获取EF Core

通过NuGet获取要使用的数据库支持。比如:Microsoft SQL Sever

打开NuGet程序包管理器控制台,输入:Install-PackageMicrosoft.EntityFrameworkCore.SqlServer

2.模型

EF Core 是通过一个模型进行数据库访问的。模型由实体类和表示与数据库中的会话组成的,以及允许你查询和保存数据派生的上下文。

既可以从现有数据库生成模型,也可以使用EF 迁移来完成从模型生成数据库,也就是Database First 和 Code First。

简单的模型:

    public partial class TestContext : DbContext
    {
        public TestContext()
        {
        }

        public TestContext(DbContextOptions<TestContext> options)
            : base(options)
        {
        }

        public virtual DbSet<User> User { get; set; }

        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            if (!optionsBuilder.IsConfigured)
            {
#warning To protect potentially sensitive information in your connection string, you should move it out of source code. See http://go.microsoft.com/fwlink/?LinkId=723263 for guidance on storing connection strings.
                optionsBuilder.UseSqlServer("Data Source=.;Initial Catalog=Test;Integrated Security=True");
            }
        }

        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {}
    }

使用模型操作数据库:

    public class HomeController : Controller
    {
        private DataContext _context;
        public HomeController(DataContext context)
        {
            _context = context;
        }
        public IActionResult Index()
        {
            _context.User.Add(new User() { Name="name",Password="123"});
            _context.SaveChanges();
            //查询
            var users = _context.User.ToList();
            return View();
        }

3.Code First

Code First 也就是通过EF迁移来完成从模型生成数据库。

1.创建项目

创建一个ASP.NET Core WEB 应用程序

2.打开NuGet包管理器下载Microsoft.EntityFrameworkCore.SqlServer 和Microsoft.EntityFrameworkCore.Tools

3.在Models文件夹创建实体类和上下文类

public class BlogContext:DbContext
    {
        public BlogContext(DbContextOptions<BlogContext> options)
            : base(options)
        {
        }

        public DbSet<Blog> Blog { get; set; }
        public DbSet<Post> Post { get; set; }
    }
public class Blog
    {
        public int BlogId { get; set; }
        public string Url { get; set; }
        public virtual List<Post> Posts { get; set; }
    }
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; }
    }

4.在ConfigureServices方法中添加上下文依赖注入:

public void ConfigureServices(IServiceCollection services)
        {
            services.Configure<CookiePolicyOptions>(options =>
            {
                // This lambda determines whether user consent for non-essential cookies is needed for a given request.
                options.CheckConsentNeeded = context => true;
                options.MinimumSameSitePolicy = SameSiteMode.None;
            });

            var connectionString = Configuration.GetConnectionString("DefaultConnection");
            services.AddDbContext<BlogContext>(options =>
            options.UseSqlServer(connectionString));

            services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
        }

5.在appsettings.json中添加链接数据库字符串

{
  "ConnectionStrings": {
    "DefaultConnection": "Data Source=.;Initial Catalog=Blog;Integrated Security=True"
  },
  "Logging": {
    "LogLevel": {
      "Default": "Information"
    }
  },
  "AllowedHosts": "*"
}

6.打开NuGet程序包管理控制台,先输入 Add-Migration FirstMigration,再输入Update-Database。迁移成功后,会创建数据库,以及会在项目中生成一个Migrations文件夹,里面时迁移记录。

创建成功就可以通过构造函数依赖注入的方式访问数据库了。

4.Database First

Database First,也就是通过现有数据库生成模型

1.创建项目,并安装Microsoft.EntityFrameworkCore.SqlServer , Microsoft.EntityFrameworkCore.Tools 和Microsoft.EntityFrameworkCore.SqlServer.Design

2.在NuGet程序包管理器控制台输入:Scaffold-DbContext "Data Source=.;Initial Catalog=Blog;Integrated Security=True" Microsoft.EntityFrameworkCore.SqlServer 。执行成功会生成相关模型:

3,现在可以使用上下文访问数据库了,但是不能通过依赖注入的方式。如果需要,还是在ConfigureServices方法中添加代码:services.AddDbContext<BlogContext>()。如果要使用appsettings.json中的连接字符串,就需要按照上面ConfigureServices方法中所写的。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • C#元组类型ValueTuple用法详解

    C#元组类型ValueTuple用法详解

    本文详细讲解了C#元组类型ValueTuple的用法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-02-02
  • Entity Framework表拆分为多个实体

    Entity Framework表拆分为多个实体

    这篇文章介绍了Entity Framework表拆分为多个实体的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-03-03
  • ASP.NET Core 2.0中Razor页面禁用防伪令牌验证

    ASP.NET Core 2.0中Razor页面禁用防伪令牌验证

    在这篇短文中,我将向您介绍如何ASP.NET Core2.0 Razor页面中禁用防伪令牌验证,对此有兴趣的朋友参考学习下吧。
    2018-01-01
  • .NET 设计模式之模板方法模式(Template Method Pattern)详解

    .NET 设计模式之模板方法模式(Template Method Pattern)详解

    模板方法模式(Template Method Pattern),又叫模板模式(Template Pattern),是一种行为设计模式,它定义了一个操作中的算法框架,将某些步骤的具体实现留给子类,这篇文章主要介绍了.NET 设计模式—模板方法模式(Template Method Pattern),需要的朋友可以参考下
    2024-04-04
  • C# 命名规则(挺不错的)

    C# 命名规则(挺不错的)

    我自己总结的一套命名规则,其实规则很重要,它是一种标准,可有可无,但有总会比无好,大家正在编码的同志仔细看看,给点改进意见。
    2009-02-02
  • ASP.NET Core中的配置详解

    ASP.NET Core中的配置详解

    这篇文章主要介绍了ASP.NET Core中的配置详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-02-02
  • Visual Studio卸载不完全问题的解决方法

    Visual Studio卸载不完全问题的解决方法

    这篇文章主要为大家详细介绍了Visual Studio卸载不完全问题的解决方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-04-04
  • 在FireFox/IE下Response中文文件名乱码问题解决方案

    在FireFox/IE下Response中文文件名乱码问题解决方案

    只是针对没有空格和IE的情况下使用Response.AppendHeader()如果想在FireFox下输出没有编码的文件,并且IE下输出的文件名中空格不为+号,就要多一次判断了,接下来将详细介绍下感兴趣的朋友可以了解下,或许对你有所帮助
    2013-02-02
  • 限制CheckBoxList控件只能单选实现代码及演示动画

    限制CheckBoxList控件只能单选实现代码及演示动画

    开发要求,原本对CheckBoxList控件是用来让用户多选的。但现在特殊要求,这个CheckBoxList控件限制只能单选,很多新手朋友可能不知从何下手,为此本文的出现时有必要的了,有需要的朋友可以了解此文
    2013-01-01
  • .Net Core 之 Ubuntu 14.04 部署过程(图文详解)

    .Net Core 之 Ubuntu 14.04 部署过程(图文详解)

    本篇文章主要介绍了.Net Core 之 Ubuntu 14.04 部署过程(图文详解),有兴趣的可以了解一下。
    2016-11-11

最新评论