如何在ASP.NET Core项目中配置Entity Framework?求助教程相关问题
嘿,刚接触ASP.NET Core踩点小坑很正常~你提到的project.json其实是ASP.NET Core早期版本的配置文件,现在早就换成.csproj啦,我来一步步带你搞定用EF Core实现数据库查询和页面展示的完整流程:
1. 安装Entity Framework Core对应包
首先得根据你的数据库类型安装EF Core的适配包,比如常用的SQL Server,你可以选下面一种方式安装:
- 包管理器控制台:执行
Install-Package Microsoft.EntityFrameworkCore.SqlServer - .NET CLI终端:执行
dotnet add package Microsoft.EntityFrameworkCore.SqlServer
如果是其他数据库(比如SQLite、MySQL),替换成对应的包即可,比如Microsoft.EntityFrameworkCore.Sqlite。
2. 配置数据库连接字符串
打开项目根目录的appsettings.json,添加连接字符串配置:
{ "ConnectionStrings": { "DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=YourTestDB;Trusted_Connection=True;MultipleActiveResultSets=true" }, // 其他原有配置... }
把YourTestDB换成你想要的数据库名称就行。
3. 创建数据模型与DbContext
先定义一个简单的数据模型(比如我们做用户列表查询):
// 可以放在Models/User.cs文件中 public class User { public int Id { get; set; } public string Name { get; set; } public string Email { get; set; } }
然后创建DbContext类,它是EF Core和数据库交互的核心:
// 可以放在Data/AppDbContext.cs文件中 using Microsoft.EntityFrameworkCore; public class AppDbContext : DbContext { public AppDbContext(DbContextOptions<AppDbContext> options) : base(options) { } // 声明要操作的数据库表对应的DbSet public DbSet<User> Users { get; set; } }
4. 在Program.cs中注册DbContext服务
打开Program.cs,把AppDbContext注入到依赖注入容器中:
var builder = WebApplication.CreateBuilder(args); // 注册DbContext,指定用SQL Server和我们配置的连接字符串 builder.Services.AddDbContext<AppDbContext>(options => options.UseSqlServer(builder.Configuration.GetConnectionString("DefaultConnection"))); // 添加MVC服务(如果用Razor Pages的话换成AddRazorPages()) builder.Services.AddControllersWithViews(); var app = builder.Build(); // 下面是默认的中间件配置,保留原有内容即可 app.UseHttpsRedirection(); app.UseStaticFiles(); app.UseRouting(); app.UseAuthorization(); app.MapControllerRoute( name: "default", pattern: "{controller=Home}/{action=Index}/{id?}"); app.Run();
5. 编写控制器查询数据并传递给视图
比如在HomeController中注入AppDbContext,查询数据后传给视图:
using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; public class HomeController : Controller { private readonly AppDbContext _dbContext; // 通过构造函数注入DbContext public HomeController(AppDbContext dbContext) { _dbContext = dbContext; } public async Task<IActionResult> Index() { // 异步查询所有用户数据 var userList = await _dbContext.Users.ToListAsync(); // 把数据传递给视图 return View(userList); } }
然后在Views/Home目录下创建Index.cshtml视图,展示数据:
@model List<User> <h2>用户列表</h2> <table class="table table-striped"> <thead> <tr> <th>ID</th> <th>姓名</th> <th>邮箱</th> </tr> </thead> <tbody> @foreach (var user in Model) { <tr> <td>@user.Id</td> <td>@user.Name</td> <td>@user.Email</td> </tr> } </tbody> </table>
6. 初始化数据库(可选)
如果你的数据库还没创建,可以用EF Core的迁移功能自动生成数据库和表:
- 包管理器控制台:先执行
Add-Migration InitialCreate创建迁移文件,再执行Update-Database应用迁移到数据库 - .NET CLI终端:先执行
dotnet ef migrations add InitialCreate,再执行dotnet ef database update
之后你可以手动给Users表添加一些测试数据,运行项目就能看到页面展示的结果啦~
内容的提问来源于stack exchange,提问作者loremIpsum1771




