实体框架中的数据注释中的表名不起作用。

时间:2015-08-25 11:30:12

标签: asp.net-mvc ef-code-first entity-framework-6 data-annotations

我在MVC 5中使用实体框架6创建了一个项目。我正在使用代码第一种方法。我希望在其中一个模型中为表定义一个不同的名称,然后默认。为此我使用System.ComponentModel.DataAnnotationsname空间并定义这样的类:

[Table(Name="Auditoria")]
public class AuditoriaDAL
{
    [Key]
    public int AuditoriaId { get; set; }

    ... 
}

运行项目我得到一个数据库,其中包含一个名为AuditoriaDALs的表。为什么表的名称不是我定义的名称?

3 个答案:

答案 0 :(得分:3)

当您需要引用System.ComponentModel.DataAnnotations.Schema.Table时,您正在引用System.Data.Linq.Mapping.Table属性。所以要么这样做:

using System.ComponentModel.DataAnnotations.Schema;
...

[Table("Auditoria")]
public class AuditoriaDAL
{
    [Key]
    public int AuditoriaId { get; set; }

    ... 
}

或者更好:

{{1}}

https://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations(v=vs.110).aspx

答案 1 :(得分:2)

您可以像下面这样设置TableName:

public class MyContext : DBContext
{
  public virtual DbSet<AuditoriaDAL> Auditorias { get; set; }
}

或OnModelCreating:

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        base.OnModelCreating(modelBuilder);

        modelBuilder.Entity<AuditoriaDAL>().ToTable("Auditorias");
    }

答案 2 :(得分:0)

名称=不是必需的。你应该试试[表(“Auditoria”)]。