You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET Core MVC中如何使用Entity Context?旧教程适配问题求助

解决ASP.NET Core MVC中EF Core与老版EF教程不兼容的问题

我当年刚从ASP.NET MVC 3转ASP.NET Core的时候,也踩过一模一样的坑!核心问题是:你参考的教程是基于Entity Framework 6(对应MVC3时代的EF),但ASP.NET Core用的是全新的Entity Framework Core,这俩是完全独立的框架,API、配置方式都不一样,所以才会出现DbContext、DbSet不识别,using System.Data.Entity;报错的情况。下面一步步帮你解决:

1. 替换EF相关NuGet包

首先把老版EF的包(如果误装了)删掉,安装EF Core对应SQL Server的包:

  • 在NuGet包管理器中安装 Microsoft.EntityFrameworkCore
  • 安装 Microsoft.EntityFrameworkCore.SqlServer(连接SQL Server必需)
  • 如果需要数据库迁移工具,再加装 Microsoft.EntityFrameworkCore.Tools

2. 修正实体上下文类的代码

把你原来的MusicStoreEntities类里的命名空间和构造函数改掉,Core版本的代码应该是这样:

using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
using System.Linq;

namespace MVCMusicStore.Models
{
    public class MusicStoreEntities : DbContext
    {
        // 必须添加带DbContextOptions的构造函数,用于依赖注入
        public MusicStoreEntities(DbContextOptions<MusicStoreEntities> options) : base(options)
        {
        }

        public DbSet<Album> Albums { get; set; }
        public DbSet<Genre> Genres { get; set; }
    }
}

注意:

  • 把using System.Data.Entity;替换成using Microsoft.EntityFrameworkCore;,DbContext和DbSet都在这个新命名空间下
  • ASP.NET Core中DbContext是通过依赖注入管理的,所以必须添加带DbContextOptions的构造函数,不能像老版EF那样自动读取web.config的连接字符串

3. 配置连接字符串(替换老版web.config)

ASP.NET Core不再使用web.config存储连接字符串,而是用appsettings.json。打开你的appsettings.json,添加连接字符串配置:

{
  "ConnectionStrings": {
    "MusicStoreEntities": "Server=你的SQL服务器名称;Database=MVCMusicStore;Trusted_Connection=True;TrustServerCertificate=True;"
  },
  // 其他原有配置...
}

根据你的SQL Server环境调整:如果是SQL Server认证,要加上User Id=xxx;Password=xxx;

4. 注册DbContext到依赖注入容器

在.NET 6+的项目里,打开Program.cs,添加注册DbContext的代码:

// 注册DbContext,读取appsettings.json里的连接字符串
builder.Services.AddDbContext<MusicStoreEntities>(options =>
    options.UseSqlServer(builder.Configuration.GetConnectionString("MusicStoreEntities")));

如果是.NET 5及更早的项目,在Startup.cs的ConfigureServices方法里添加:

services.AddDbContext<MusicStoreEntities>(options =>
    options.UseSqlServer(Configuration.GetConnectionString("MusicStoreEntities")));

5. 创建数据库迁移并生成数据库

EF Core的迁移命令和老版EF不同,打开Package Manager Console(PMC)执行:

  • 初始化迁移:Add-Migration InitialCreate
  • 生成数据库:Update-Database

补充说明

  • 老版教程里的web.config中的<connectionStrings>配置在ASP.NET Core中完全没用,直接忽略即可
  • 确保你的Album和Genre实体类有主键属性(比如public int Id { get; set; }),EF Core会自动识别为主键

按这些步骤改完,你的DbContext和DbSet应该就能正常识别,数据库连接也能正常工作了!

内容的提问来源于stack exchange,提问作者Simplexible

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:33:56