2.Entity Framework Core配置

1.安装依赖包

工具菜单中选择NuGet包管理器程序包管理器控制台 (PMC) 或 从项目菜单中选择管理NuGet程序包dotnet CLI

1.1安装EF Core数据库提供程序

安装EF Core数据库提供程序会安装 数据库驱动 和 EF Core运行时。

//SQL Server
//PMC
Install-Package Microsoft.EntityFrameworkCore.SqlServer

//CLI
dotnet add package Microsoft.EntityFrameworkCore.SqlServer
//MySQL
//PMC
Install-Package Pomelo.EntityFrameworkCore.MySql

//CLI
dotnet add package Pomelo.EntityFrameworkCore.MySql

1.2安装 EF Core 工具

//PMC
Install-Package Microsoft.EntityFrameworkCore.Tools

//CLI
dotnet tool install --global dotnet-ef
dotnet add package Microsoft.EntityFrameworkCore.Design

1.3安装检测和诊断 EF Core 迁移错误的中间件

Install-Package Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore

2.数据库连接字符串

在 appsettings.json 文件中读取数据库连接字符串。

//SQL Server
"ConnectionStrings": {
    "SchoolContext": "Server=(localdb)\\mssqllocaldb;Database=SchoolContext-568d112b-dfd0-4be1-b34b-0f56e9b2a475;Trusted_Connection=True;MultipleActiveResultSets=true"
  }
//Mysql
"ConnectionStrings": {
    "SchoolContext": "server=YOURSERVER;user=YOURUSERID;password=YOURPASSWORD;database=YOURDATABASE"
    }

3.新建实体模型

右键单击Models文件夹-添加-名称单数Blog.csPost.cs

public class Blog
{
    public int BlogId { get; set; }
    public string Url { get; set; }
    public int Rating { get; set; }
    public 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.创建数据库上下文

在项目文件夹中,创建名为 Data 文件夹,在 Data 文件夹中,创建 SchoolContext.cs 类。

表名默认和 DbSet 属性名相同,通常采用复数形式。 例如,使用 Students,而不使用 Student。 

using ContosoUniversity.Models;
using Microsoft.EntityFrameworkCore;

namespace ContosoUniversity.Data
{
    public class SchoolContext : DbContext
    {
        public SchoolContext(DbContextOptions<SchoolContext> options) : base(options)
        {
        }

        public DbSet<Course> Courses { get; set; }
        public DbSet<Enrollment> Enrollments { get; set; }
        public DbSet<Student> Students { get; set; }
    }
}

5.注册服务

//SQL Server
builder.Services.AddDbContext<SchoolContext>(options =>
    options.UseSqlServer(builder.Configuration.GetConnectionString("SchoolContext")));
//MySQL
var connectionString = builder.Configuration.GetConnectionString("SchoolContext");

var serverVersion = new MySqlServerVersion(new Version(8, 0, 29));
或者
var serverVersion = ServerVersion.AutoDetect(connectionString);

builder.Services.AddDbContext<SchoolContext>(options =>
    options.UseMySql(connectionString, serverVersion));
//添加数据库异常筛选器
builder.Services.AddDatabaseDeveloperPageExceptionFilter();

原创文章,作者:huoxiaoqiang,如若转载,请注明出处:https://www.huoxiaoqiang.com/csharp/entityframeworkcore/14607.html

(0)
上一篇 2022年6月1日 23:04
下一篇 2022年6月2日 20:53

相关推荐

  • 4.Entity Framework Core关系

    1.实体与属性 默认情况下,如果在类型上发现导航属性,将创建关系。 如果它指向的类型不能由当前数据库提供程序映射为标量类型,则属性被视为导航属性。 1.1主体实体 主体实体是指包含主体键/备选键属性的实体。有时被称为关系的“父级”。 1.2依赖实体 依赖实体是指包含外键属性的实体。有时被称为关系的“子级”。 1.3主体…

  • 6.Entity Framework Core迁移

    迁移文件的格式通常为<timestamp>_PascalName.cs(时间辍精确到秒,比如:20220825221808_InitialCreate.cs),PascalName是任意的,但是为迁移文件使用有意义的名称是有帮助的。 默认情况下,SQL Server Express LocalDB会在 C:/用户…

  • 1.语言集成查询(Language-Integrated Query,LINQ)

    语言集成查询(Language-Integrated Query,LINQ)是一系列直接将查询功能集成到 C# 语言的技术统称。 随着时间的推移,人们已经为各种数据源开发了不同的语言,例如,用于关系数据库的 SQL 和用于 XML 的 XQuery。 因此,开发人员对于它们必须支持的每种数据源或数据格式,都不得不学习一…

发表回复

登录后才能评论