2017-10-20 14 views
0

J'utilise EF Code First depuis 1 mois. Mon projet doit fonctionner avec beaucoup de tables (plus de 100 tables de données) et elles seront changées plusieurs fois dans le futur. Il est difficile de contrôler et de prendre le temps d'ajouter la migration.Comment faire correspondre le nom d'une table avec EF Entity?

Alors existe-t-il une solution pour passer l'étape d'ajout de migration, il suffit de créer la table dans la base de données et de créer un mappage vers l'entité?

Exemple:

Dans la base de données J'ai une table comme ceci:

CREATE TABLE dbo.MyTable 
(
    Id INT, 
    Name VARCHAR(255), 
    Description VARCHAR(1000) 
); 

Je veux la carte à l'entité suivante:

public class MyEntity 
{ 
    public Id int {get; set;} 
    public Name string {get; set;} 
    public Description string {get; set;} 
} 

Ma solution attendue est quelque chose comme ça :

CreateMap("dbo.MyTable", MyEntity) 
+1

vous pouvez utiliser l'attribut [Table ("MyTable")] sur votre entité? – MstfAsan

+0

https://stackoverflow.com/help/how-to-ask – Kixoka

Répondre

2

Utilisez l'attribut System.ComponentModel.DataAnnotations.Schema.Table

[Table("MyTable")] 
public class MyEntity 
{ 
    public Id int {get; set;} 
    public Name string {get; set;} 
    public Description string {get; set;} 
} 

Si vous ne voulez pas vraiment d'exécuter les migrations, je suggère de créer les de toute façon et commentez le code pertinent avant de les exécuter. De cette façon, vous serez bien mis en place pour l'occasion lorsque vous voulez réellement les exécuter.

1

Vous pouvez définir les cartes d'entités en remplaçant la méthode appelée OnModelCreating dans votre DbContext:

Ensuite, vous pouvez ajouter des cartes similaires à:

modelBuilder.Entity<Order>(m => { 
    m.ToTable("MyTable", "dbo"); 
}) 

Info: https://docs.microsoft.com/en-us/ef/core/modeling/relational/tables

EDIT: Je ne sais pas J'aime ajouter des annotations directement à mon entité, car je préfère la centraliser en un seul endroit. Plus facile à gérer. Après tout ce que je suppose que c'est une question de préférences :)