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

如何在Entity Framework Core中使用已有SQL脚本与SQL Server数据库

问题1:已有SQL Server数据库,如何在EF Core中使用

可通过EF Core的**反向工程(脚手架)**功能直接从现有数据库生成实体类与DbContext,步骤如下:

  • 安装EF Core全局工具:
    dotnet tool install --global dotnet-ef
    
  • 为项目添加SQL Server EF Core提供程序:
    dotnet add package Microsoft.EntityFrameworkCore.SqlServer
    
  • 执行反向工程命令生成代码:
    dotnet ef dbcontext scaffold "Server=你的服务器地址;Database=目标数据库名;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -o Models -c 自定义上下文名称
    
    参数说明:
    • -o Models:指定实体类与上下文的输出目录
    • -c 自定义上下文名称:设置DbContext的类名(如SampleDbContext)
  • 生成完成后,项目会自动创建对应数据库表的实体类(包含字段、导航属性)及配置好连接的DbContext,可直接用于数据操作。
问题2:必须从零创建模型,如何操作

手动构建模型匹配目标数据库结构,按以下流程执行:

  1. 编写实体类
    对应数据库表结构创建实体类,字段与表列一一映射,标注主键、数据类型等特性。以示例数据库的Customers表为例:
    public class Customer
    {
        public string CustomerId { get; set; }
        public string CompanyName { get; set; }
        public string ContactName { get; set; }
        // 其他字段...
        // 导航属性:关联Orders表(一对多关系)
        public ICollection<Order> Orders { get; set; }
    }
    
  2. 配置实体关系
    通过数据注解或Fluent API定义实体间的关联(一对多、多对多等)。例如在DbContext中用Fluent API配置Customer与Order的关系:
    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Customer>()
            .HasMany(c => c.Orders)
            .WithOne(o => o.Customer)
            .HasForeignKey(o => o.CustomerId);
    }
    
  3. 创建DbContext
    定义继承自DbContext的类,添加对应实体的DbSet并配置数据库连接:
    public class SampleDbContext : DbContext
    {
        public DbSet<Customer> Customers { get; set; }
        public DbSet<Order> Orders { get; set; }
        // 其他实体DbSet...
    
        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            optionsBuilder.UseSqlServer("Server=你的服务器地址;Database=目标数据库名;Trusted_Connection=True;");
        }
    }
    
  4. 生成数据库
    执行迁移命令创建数据库及表:
    • 初始化迁移:dotnet ef migrations add InitialCreate
    • 应用迁移到数据库:dotnet ef database update

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 03:42:21