Entity Framework Core(EF Core)是一个轻量级、可扩展的对象关系映射(ORM)框架,它允许开发者使用.NET 语言来操作数据库,而无需直接编写 SQL 语句。本教程将带你快速上手 EF Core,让你轻松掌握这个强大的 ORM 工具。
一、安装 Entity Framework Core
首先,确保你已经安装了.NET Core SDK。然后,在你的项目中安装 Entity Framework Core 包。可以通过 NuGet 包管理器或者在命令行中使用以下命令进行安装:
dotnet add package Microsoft.EntityFrameworkCore
二、创建数据库上下文
数据库上下文(DbContext)是 EF Core 中与数据库进行交互的主要入口点。创建一个新的类,继承自DbContext
类,并在其中定义数据库表的实体类集合。
例如,假设我们有一个名为“Book”的实体类,代表数据库中的书籍表:
using Microsoft.EntityFrameworkCore;
namespace MyApp.Models
{
public class BookContext : DbContext
{
public BookContext(DbContextOptions<BookContext> options) : base(options)
{
}
public DbSet<Book> Books {
get; set; }
}
public class Book
{
public int Id {
get; set; }
public string Title {
get; set; }
public string Author {
get; set; }
}
}
三、配置数据库连接
在应用程序的启动文件中,配置数据库连接。可以使用不同的数据库提供程序,如 SQL Server、MySQL、PostgreSQL 等。
以下是一个使用 SQL Server 数据库的示例:
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
namespace MyApp
{
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration {
get; }
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<BookContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("MyConnectionString")));
services.AddControllers();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseRouting();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
}
}
}
在appsettings.json
文件中添加数据库连接字符串:
{
"ConnectionStrings": {
"MyConnectionString": "Server=(localdb)\\mssqllocaldb;Database=MyDatabase;Trusted_Connection=True;"
}
}
四、执行数据库操作
一旦配置好数据库上下文和连接,就可以使用 EF Core 进行数据库操作了。以下是一些常见的操作示例:
- 添加数据:
using (var context = new BookContext())
{
var book = new Book {
Title = "The Great Gatsby", Author = "F. Scott Fitzgerald" };
context.Books.Add(book);
context.SaveChanges();
}
- 查询数据:
using (var context = new BookContext())
{
var books = context.Books.ToList();
foreach (var book in books)
{
Console.WriteLine($"Title: {book.Title}, Author: {book.Author}");
}
}
- 更新数据:
using (var context = new BookContext())
{
var book = context.Books.Find(1);
if (book!= null)
{
book.Title = "New Title";
context.SaveChanges();
}
}
- 删除数据:
using (var context = new BookContext())
{
var book = context.Books.Find(1);
if (book!= null)
{
context.Books.Remove(book);
context.SaveChanges();
}
}
五、数据库迁移
EF Core 支持数据库迁移,允许你在不丢失数据的情况下更改数据库结构。可以使用以下命令创建和应用数据库迁移:
- 创建初始迁移:
dotnet ef migrations add InitialMigration
- 更新数据库:
dotnet ef database update
六、总结
通过本教程,你应该对 Entity Framework Core 有了一个初步的了解,并能够使用它进行基本的数据库操作。EF Core 提供了许多强大的功能,如查询构建、事务处理、懒加载等,可以大大提高开发效率。在实际应用中,可以根据具体需求深入学习和探索 EF Core 的更多功能。
以下是一个完整的示例项目,展示了如何使用 Entity Framework Core 进行数据库操作:
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
namespace MyApp
{
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration {
get; }
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<BookContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("MyConnectionString")));
services.AddControllers();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseRouting();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
}
}
public class BookContext : DbContext
{
public BookContext(DbContextOptions<BookContext> options) : base(options)
{
}
public DbSet<Book> Books {
get; set; }
}
public class Book
{
public int Id {
get; set; }
public string Title {
get; set; }
public string Author {
get; set; }
}
class Program
{
static void Main()
{
var builder = WebApplication.CreateBuilder();
builder.Services.AddControllers();
var app = builder.Build();
if (app.Environment.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseRouting();
app.UseAuthorization();
app.MapControllers();
app.Run();
}
}
}
希望这个教程对你有所帮助,让你能够快速上手 Entity Framework Core,开启高效的数据库开发之旅。