【问题标题】:specify a different name for table|column name in EF4为 EF4 中的表|列名称指定不同的名称
【发布时间】:2016-02-03 15:17:26
【问题描述】:

我正在使用带有 CodeFirst 的 EF4

public class People : DbContext
{
    public DbSet<Human> Humans { get; set; }
    public DbSet<Child> Children { get; set; }
}

目前,EF 在数据库中查找Human 表。我如何指定它来寻找Humans

【问题讨论】:

    标签: entity-framework entity-framework-4


    【解决方案1】:

    您可以在Human 类上更改表名:

    [Table("Humans")]
    public class Human
    {
        ...
    }
    

    其他方式是使用 Fluent API:

    modelBuilder.Entity<Human>()
        .ToTable("Humans");
    

    类似地,您可以使用ColumnAttributeHasColumnName 方法来更改列的名称。

    【讨论】:

    • 非常有用!我一直在每次迁移创建时手动修复这些问题。
    • 我只想指出,模型构建仅针对给定 DbContext 派生类的第一个实例执行。然后将其缓存以供将来的实例使用。因此,“MyDbContext.OnModelCreating()”(通常会发生 Fluent 上下文配置)在您的应用程序中只调用一次。 -- 这可以防止每个 DbContext 实例具有真正动态的表名称。 ——我写这篇文章是因为我发现了困难的方法。可能会让人头疼:)
    猜你喜欢
    • 1970-01-01
    • 2014-12-28
    • 1970-01-01
    • 1970-01-01
    • 2021-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多