我在MVC 5中使用实体框架6创建了一个项目。我正在使用代码第一种方法。我希望在其中一个模型中为表定义一个不同的名称,然后默认。为此我使用System.ComponentModel.DataAnnotationsname空间并定义这样的类:
[Table(Name="Auditoria")]
public class AuditoriaDAL
{
[Key]
public int AuditoriaId { get; set; }
...
}
运行项目我得到一个数据库,其中包含一个名为AuditoriaDALs的表。为什么表的名称不是我定义的名称?
答案 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”)]。