如何在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:必须从零创建模型,如何操作
手动构建模型匹配目标数据库结构,按以下流程执行:
- 编写实体类
对应数据库表结构创建实体类,字段与表列一一映射,标注主键、数据类型等特性。以示例数据库的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; } } - 配置实体关系
通过数据注解或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); } - 创建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;"); } } - 生成数据库
执行迁移命令创建数据库及表:- 初始化迁移:
dotnet ef migrations add InitialCreate - 应用迁移到数据库:
dotnet ef database update
- 初始化迁移:
内容的提问来源于stack exchange,提问作者hendoo
相关产品推荐
相关产品推荐

