Commencez à utiliser CodeFirst dans mes projets MVC et rencontrez des problèmes. J'ai une base de données en cours d'utilisation avec un schéma prédéfini. Il y a quelques tables:Mappage plusieurs-à-plusieurs personnalisé avec CodeFirst
[Persons]
[ID] [bigint] IDENTITY(1,1) NOT NULL,
[Name] [nvarchar](30) NOT NULL,
[Birthday] [datetime] NOT NULL,
[Address] [nvarchar](30) NOT NULL,
[Zip] [nvarchar](5) NOT NULL,
[City] [nvarchar](30) NOT NULL,
[Tax] [money] NOT NULL,
[Memo] [varbinary](max) NULL
[Seminars]
[ID] [bigint] IDENTITY(1,1) NOT NULL,
[Name] [nvarchar](20) NOT NULL
et bien à plusieurs table reliée
[QualRef]
[SemID] [bigint] NOT NULL,
[RefID] [bigint] NOT NULL
où SEMID fait référence à Seminars.ID et RefID référencé à Persons.ID
Je suis en train pour corriger ma liaison de schéma CodeFirst à l'aide de la classe de configuration:
class PersonConfiguration : EntityTypeConfiguration<Person>
{
internal PersonConfiguration()
{
this.HasMany(i => i.Seminars)
.WithMany(c => c.Persons)
.Map(mc =>
{
mc.MapLeftKey("SemID");
mc.MapRightKey("RefID");
mc.ToTable("QualRef");
});
}
}
et l'enregistrer avec ce code:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Person>().ToTable("Persons");
base.OnModelCreating(modelBuilder);
modelBuilder.Configurations.Add(new PersonConfiguration());
}
Mais quand je lance l'application en utilisant cette erreur est survenue modèles - CodeFirst essayant de trouver une table « dbo.People » et il n'existe pas (prévu) (?!). Merci pour les bonnes réponses!
est que Totable ("Personnes Habilitées") n'ont pas de raison. Le problème est avec la table "QualRef" – DrAlligieri
Avez-vous essayé mon code? Essayez de changer l'ordre du code dans 'OnModelCreating' dans votre code pour appeler la méthode de base à la fin après' modelBuilder.Configurations.Add (new PersonConfiguration()); '. –
Oui, Jayantha, j'ai essayé ça. Le problème est que (comme je le pense) EF essayant de créer (ou associer) une nouvelle cartographie pour la table de connexion. Pourquoi ça fait ça - je ne sais pas. – DrAlligieri