📌  相关文章
📜  实体框架核心 - C# (1)

📅  最后修改于: 2023-12-03 15:39:08.097000             🧑  作者: Mango

实体框架核心 - C#

Entity Framework Core (EF Core)是一个轻量级、可扩展、开源和跨平台的 ORM (Object-Relational Mapping)框架,作为 .NET Core 技术栈中的基础组件之一,可用于与各种数据库(如 PostgreSQL、SQL Server、MySQL 等)进行交互。

优势

相比其它 ORM 框架,EF Core 具有以下优势:

  1. 轻量级:EF Core 比前代版本(EF6)更加轻量化,体积减小;

  2. 跨平台:EF Core 支持 .NET Core、.NET Framework、Xamarin、UWP 等众多平台;

  3. 易学易用:EF Core 的 API 设计新颖,扩展性强,学习和使用较为容易;

  4. 可扩展性强:EF Core 支持插件式开发,可以方便地扩展其功能;

  5. 性能优秀:EF Core 通过查询编译器、查询优化器等技术实现了较高的查询性能。

快速上手
数据库上下文

首先,我们需要创建一个继承自 DbContext 的数据库上下文类,用于连接并操作数据库。下面是一个简单的示例:

using System;
using Microsoft.EntityFrameworkCore;

namespace EFCoreDemo
{
    // 定义一个数据库上下文类
    public class MyDbContext : DbContext
    {
        // 使用构造函数注入数据连接字符串
        public MyDbContext(DbContextOptions<MyDbContext> options)
            : base(options) { }

        // 定义一个实体集属性,在数据库中会生成一张对应的表
        public DbSet<Person> People { get; set; }
    }

    // 定义一个实体类
    public class Person
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public int Age { get; set; }
        public DateTime Birthday { get; set; }
    }
}
数据库连接

接下来,我们需要在 Program.cs 中配置并创建 DbContext。

using System;
using System.Linq;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;

namespace EFCoreDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            // 配置依赖注入容器
            var services = new ServiceCollection()
                .AddDbContext<MyDbContext>(options =>
                {
                    options.UseSqlServer("Data Source=(localdb)\\MSSQLLocalDB;Initial Catalog=EFCoreDemo;Integrated Security=True");
                })
                .BuildServiceProvider();

            using var scope = services.CreateScope();

            // 从容器中获取 MyDbContext 实例
            var context = scope.ServiceProvider.GetRequiredService<MyDbContext>();

            // 进行数据库迁移
            context.Database.Migrate();

            // 添加一条数据到 People 表中
            context.People.Add(new Person()
            {
                Name = "Alice",
                Age = 20,
                Birthday = new DateTime(2001, 1, 1),
            });
            context.SaveChanges();

            // 查询 People 表中所有的数据并打印到控制台
            foreach (var person in context.People)
            {
                Console.WriteLine($"Name:{person.Name}, Age:{person.Age}, Birthday:{person.Birthday}");
            }
        }
    }
}

运行上述程序,即可完成对数据库的连接,并向 People 表中添加一条数据,并从 People 表中查询并输出所有的数据到控制台。

总结

本文简单介绍了 EF Core 的优势以及使用方法,适合初次接触的程序员进行学习和掌握。在实际开发中,EF Core 作为数据访问的重要组件,可以大大提高开发效率,减轻程序员的工作负担。