2010-12-13 2 views
1

Je viens de commencer à implémenter EF CTP 5 dans un nouveau projet. Dans ce cas, tous mes champs de base de données sont nommés différemment de mes propriétés POCO en raison d'une convention de dénomination de base de données obscure. Ai-je raison de penser la meilleure façon de mapper c'est de passer outre OnModelCreating et ont un code comme celui-ciEntity Framework Code Premier mappage CTP5

modelBuilder.Entity<Sale>().Property(s => s.ID).HasColumnName("sale_id"); 
    modelBuilder.Entity<Sale>().Property(s => s.ProductName).HasColumnName("product_name"); 
    modelBuilder.Entity<Sale>().Property(s => s.ProductPrice).HasColumnName("product_price"); 
    modelBuilder.Entity<Sale>().Property(s => s.SaleDate).HasColumnName("sale_date"); 

Cela va finir très grand très rapide, est-ce vraiment la meilleure façon de le faire?

Répondre

1

Merci pour les réponses

j'ai fini par coller avec mon approche originale que je voulais garder les entités séparées de la couche de données. Cependant, pour le rendre plus gérable, j'ai fait du contexte une classe partielle et créé un fichier pour chaque entité avec une méthode privée comme MapUsers ou MapRoles puis dans OnModelCreating je viens d'appeler ces méthodes.

+0

Solution intéressante - utilisation des partiels, puis de l'événement. Cela signifie que vous pourriez avoir une classe partielle par poco, non? (pire scénario). –

+0

oui c'est vrai. Peut-être que ce n'est pas pour tout le monde mais pour moi cela rend le code beaucoup plus gérable. – Gavin

3

Je pense que vous devriez envisager d'utiliser le nouvel attribut CTP5 Colonne. L'utilisation d'annotations de données semble être un meilleur choix que l'API courante dans ce cas. Votre classe de vente ressemblera le code ci-dessous:

public class Sale 
{ 
    [Column(Name="sale_id")] 
    public int ID { get; set; } 

    [Column(Name="product_name")] 
    public string ProductName { get; set; } 

    [Column(Name="product_price")] 
    public string ProductPrice { get; set; } 

    [Column(Name="sale_date")] 
    public DateTime SaleDate { get; set; } 
} 
+0

Vous avez sales_id deux fois –

+0

Je l'ai réparé, merci! –

+1

Toutefois, si vous conservez vos entités commerciales séparées de votre couche de données, cela ne semble pas être la meilleure approche. – KallDrexx

Questions connexes