Mappage des Colonnes dans l'Entity Framework Code First
Je vais avoir du mal à essayer de carte mon EF de Code 4.1 Premier modèle à une base de données. Tout fonctionne bien lorsque la base de données de correspondre au code exactement, mais quand j'ai essayer et la carte lorsque les colonnes diffèrent dans le nom, puis je suis en cours d'exécution dans des questions.
J'ai suivi un tutoriel qui doit avoir été construit avec l'un des CTP construit parce que certaines de ces méthodes sont manquants ou différents.
Mon modèle ressemble:
public class Dinner
{
public int DinnerID { get; set; }
public string HostedBy { get; set; }
public DateTime EventDate { get; set; }
public string Title { get; set; }
public string Address { get; set; }
}
public class NerdDinners : DbContext
{
public DbSet<Dinner> Dinners { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
//THIS IS WHAT I TRIED BUT IT IS FAILING
modelBuilder.Entity<Dinner>().Map(mc =>
{
mc.Properties(c => new {
colID = c.DinnerID,
colTitle = c.Title,
colHost = c.HostedBy,
colDate = c.EventDate,
colAddress = c.Address
});
mc.ToTable("tblDinner");
}
);
}
}
Je veux que mon tableau:
tblDinners
colID
colHost
colDate
colTitle
colAddress
J'obtiens cette erreur:
Les propriétés de l'expression " c => nouveau
<>f__AnonymousType0`5(colID =
c.DinnerID, colTitle = c.Titre,
colHost = c.HostedBy, colDate =
c.EventDate, colAddress = c.Adresse)'
n'est pas valide. L'expression doit
représenter une propriété: C#: t '=>
t.MyProperty' VB.Net: 'Fonction(t)
t.MyProperty'. Lors de la spécification de
plusieurs propriétés de l'utilisation d'un anonyme
type: C#: t '=> new { t.MyProperty1,
t.MyProperty2 }' VB.Net: 'Fonction(t)
Nouveau à Partir de { t.MyProperty1,
t.MyProperty2 }'.
Quelle est la bonne syntaxe pour mapper les colonnes?
Des Points de Bonus si vous laissez-moi savoir comment configurer l'Adresse de la Propriété dans une sous-classe appelée Adresse:
public class Address
{
City
State
Zip, etc
}
Vous devez vous connecter pour publier un commentaire.
Je crois que vous avez juste à faire
pour tous vos colonnes que vous souhaitez la db noms de colonne pour être nommé différemment de leurs noms de propriété.
Edit: Après quelques recherches je suis tombé sur cette question. À en juger par que et l'erreur que vous avez posté, il semble que la
mc.Properties()
est plus pour le fractionnement des valeurs dans des tables différentes, de ne pas réellement renommer les noms de table. Je pense que le renommage devra encore être fait sur un manuel de base.C'est encore une fois de l'information à partir d'une recherche sur google et je n'ai aucune idée si je suis juste en manque un morceau à faire exactement ce que vous voulez :).
.ToTable()
appel de la.Map()
appel et l'ajouter à la fin de la Carte (donc.Map(mc => ....).ToTable()
). Je ne sais pas si c'est valable dans l'API, mais je me demande si les deux commandes à la cartographie est valide.Comment sur l'utilisation de DataAnnotations?
Vous pouvez trouver une liste complète avec les échantillons à http://msdn.microsoft.com/en-us/data/gg193958