执行Scaffold-DbContext时EF生成错误表类名如何修复?
修复EF Scaffold生成错误类结构的方案
方法1:数据注解手动修正
- 删除
PackageData类内部的PackageDatum类 - 将原
PackageDatum中的属性移到PackageData类中,同时添加表映射注解明确关联数据库表:
using System.ComponentModel.DataAnnotations.Schema; [Table("PackageData")] public class PackageData { // 原PackageDatum类的属性全部迁移到此处 public int Id { get; set; } // 其他表字段对应的属性... }
方法2:Fluent API配置表映射
- 移除
PackageData内部的PackageDatum类,保留PackageData类结构 - 在项目的DbContext类的
OnModelCreating方法中添加表映射规则:
protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Entity<PackageData>() .ToTable("PackageData"); // 其他实体的配置代码... }
方法3:重新生成时指定规则避免错误
在Scaffold-DbContext命令中添加参数,指定目标表并启用数据注解生成,让工具直接生成正确的类结构:
Scaffold-DbContext "Server=.;User ID=*****;Password=*******;Database=*******;Trusted_Connection=True;Encrypt=False;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models -force -Tables PackageData -DataAnnotations
内容的提问来源于stack exchange,提问作者hmahdavi
相关产品推荐
相关产品推荐

