我在使用 Entity Framework Core 1.1 的 ASP.NET Core 应用程序中遇到以下情况
名为“Content”的数据库表
- Content_ID(int not null,主键)
- 标题(最大可变字符)
- 描述(最大可变字符)
模型(“ContentEntry.cs”):
public class ContentEntry
{
public int Id {get; set;}
public string Title {get; set;}
public string Description {get; set;}
}
配置文件 (ContentEntryConfiguration.cs)
public class ContentEntryConfiguration : IEntityMappingConfiguration<ContentEntry>
{
public void Map(EntityTypeBuilder<ContentEntry> modelBuilder)
{
modelBuilder.HasKey(m => m.Id);
modelBuilder.Property(m => m.Id).HasColumnName("Content_ID");
modelBuilder.Property(m => m.Title ).HasColumnName("Title");
modelBuilder.Property(m => m.Description).HasColumnName("Description");
modelBuilder.ToTable("Content");
}
}
如上所述,我的表的主键名为“Content_ID”。 当我执行 LINQ 查询时,我收到一条错误消息,指出在数据库中未找到“ID”列。使用 SQL Profiler 检查生成的查询后,我注意到查询包含“ID”而不是“Content_ID”。 我希望 Entity Framework 生成一个包含列“Column_ID”的查询,并将其映射到我名为“Id”的模型属性。
您是否知道为什么会发生这种情况以及我该如何解决这个问题?
最佳答案
对于需求比较简单的人来说,这就足够了
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<ContentEntry>().Property(c => c.Id).HasColumnName("Content_ID");
}
关于asp.net-core - 如何拥有与 "Id"不同名称的主键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45015516/