asp.net-core - 如何拥有与 "Id"不同名称的主键

标签 asp.net-core entity-framework-core

我在使用 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/

相关文章:

c# - 如何在 asp.net core 中将 json 请求正文验证为有效的 json

c# - 将 XmlComment 用于 swagger api 帮助器页面

c# - 如何从 Fluent API 为外键设置 onUpdate?

c# - 在运行时更改 EF Core 上下文的连接字符串

powershell - 从 .NET Core 运行 PowerShell - 找不到命令

c# - Url.Action 不适用于使用路由注释在 Controller 中指定的路由

Docker 构建失败,当前 .NET SDK 不支持面向 .NET Core 2.1

.net - EF Core linq 和条件包含然后包含问题

asp.net-core - 应用程序中断访问 dbcontext、Asp .net 核心 web api 2.0 与 Entity Framework 核心 2.0 数据库第一种方法

asp.net-core - .NET Core 1.0 和 EntityFramework 7 不兼容