我正在反向工程数据库。我在带有-force标志的软件包管理器控制台中使用scaffold-dbcontext。我知道它正在更新文件。
虽然我在数据库中添加了一个主键,但是当它不起作用时,我什至添加了另一个索引:
创建的dbcontext似乎具有主键的代码:
modelBuilder.Entity<DealerDisclaimers>(entity =>
{
entity.HasKey(e => e.DealerDisclaimerId)
.HasName("PK_DealerDisclaimers");
但是,当我尝试导航到将加载该表的页面时,出现以下错误:
InvalidOperationException:实体类型'DealerDisclaimers'需要定义一个主键。
scaffold-dbcontext构建的DealerDisclaimers类看起来像这样:
public partial class DealerDisclaimers
{
public int DealerDisclaimerId { get; set; }
public int DealerId { get; set; }
public string GeneralDisclaimer { get; set; }
public string LeaseDisclaimer { get; set; }
public virtual Dealer Dealer { get; set; }
}
旁注:如果我添加[Key]属性,那么它将加载而不会出现错误。但是我不必手动添加它,scaffold-dbcontext命令应该为我准备一切。
只需将-DataAnnotations
添加到脚手架代码中,即可为我添加相应的密钥。
所以我的脚本看起来像这样:
Scaffold-DbContext "Server=MyServer;Database=MyDatabase;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -Force -DataAnnotations