В 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
.