如何删除Entity Framework 4.1生成的外键名称中的下划线

时间:2011-07-19 14:45:36

标签: .net entity-framework entity-framework-4.1 data-annotations

我有一个使用Entity Framework 4.1的关系,我的外键是自动生成的,外键的名字有下划线:

public class Setor : Entity
{
    public long Id { get; set; }
    public string Nome { get; set; }
    public virtual Secretaria Secretaria { get; set; }
}

public class Secretaria : Entity
{
    public long Id { get; set; }
    public string Nome { get; set; }
}

这个生成的外键名为: Secretaria_Id Setor

我想删除此下划线: SecretariaId

有办法做到这一点吗?我更喜欢使用DataAnnotations。

1 个答案:

答案 0 :(得分:9)

在Fluent API中,您可以为FK列指定名称:

modelBuilder.Entity<Setor>()
    .HasOptional(s => s.Secretaria)
    .WithMany()
    .Map(a => a.MapKey("SecretariaId"));

我认为DataAnnotations无法做到这一点。或者,您可以将外键公开到模型类中,如下所示:

public class Setor : Entity
{
    public long Id { get; set; }
    public string Nome { get; set; }
    public long? SecretariaId { get; set; }
    public virtual Secretaria Secretaria { get; set; }
}

约定会自动识别,因为FK和列名称将是属性的名称,即SecretariaId