Em um tutorial do primeiro código EF 4.1, é fornecido o seguinte código:
public class Department
{
public int DepartmentId { get; set; }
[Required]
public string Name { get; set; }
public virtual ICollection<Collaborator> Collaborators { get; set; }
}
Em seguida, é explicado que a interface fluente é mais flexível:
As anotações de dados são definitivamente fáceis de usar, mas é preferível usar uma abordagem programática que ofereça muito mais flexibilidade.
O exemplo do uso da interface fluente é então dado:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Department>().Property(dp => dp.Name).IsRequired();
modelBuilder.Entity<Manager>().HasKey(ma => ma.ManagerCode);
modelBuilder.Entity<Manager>().Property(ma => ma.Name)
.IsConcurrencyToken(true)
.IsVariableLength()
.HasMaxLength(20);
}
Não consigo entender por que a interface fluente é supostamente melhor. É realmente? Na minha perspectiva, parece que as anotações de dados são mais claras e têm uma sensação semântica mais clara.
Minha pergunta é por que uma interface fluente seria uma opção melhor do que usar atributos, especialmente neste caso?
(Nota: sou bastante novo em todo o conceito de interfaces fluentes; portanto, não espere conhecimento prévio sobre isso).
Referência: http://codefirst.codeplex.com/