CodeFirst EF4.1 MVC Contre l'héritage de la base de données la Multiplicité des conflits
Peu importe la manière dont je le mélange, il me donne des erreurs. J'ai le sentiment que je suis absent quelque chose d'évident que je continue à recevoir ces erreurs.
Une ou plusieurs erreurs de validation ont été détectés au cours de la génération de modèle:
Système.Les données.Edm.EdmAssociationType: : la Multiplicité des conflits avec la contrainte référentielle dans le Rôle "Venue_Courses_Source" en relation "Venue_Courses'. Parce que toutes les propriétés dans le Rôle Dépendants sont pas les valeurs null, multiplicité des le Rôle Principal doit être à '1'.
Système.Les données.Edm.EdmAssociationEnd: : la Multiplicité n'est pas valide dans le Rôle "Venue_Courses_Target" en relation "Venue_Courses'. Parce que le Rôle Dépendants fait référence à la clé des propriétés, la limite supérieure de la multiplicité des personnes Dépendantes Rôle doit être de 1.
Un Cours ne peut avoir qu'un lieu, des lieux peut être utilisé par de nombreux Cours
public class Course
{
[Key]
public virtual int Id { get; set; }
public string Title { get; set; }
public DateTime StartDate { get; set; }
public int VenueId { get; set; }
public virtual Venue Venue { get; set; }
}
public class Venue
{
[Key]
public int Id { get; set; }
public string Name { get; set; }
public virtual ICollection<Course> Courses { get; set; }
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
#region Courses
//Table Alias
modelBuilder.Entity<Course>().ToTable("DBSCHEMA.TR_COURSES");
//Keys
modelBuilder.Entity<Course>().HasKey(c => c.Id);
//Joins
//Join to Venues
modelBuilder.Entity<Course>().HasOptional(c => c.Venue);
//Fields
modelBuilder.Entity<Course>().Property(c => c.Id).HasColumnName("COURSE_ID");
modelBuilder.Entity<Course>().Property(c => c.Title).HasColumnName("CR_TITLE");
modelBuilder.Entity<Course>().Property(c => c.StartDate).HasColumnName("START_DATE");
modelBuilder.Entity<Course>().Property(c => c.VenueId).HasColumnName("VENUE_ID");
#endregion
#region Venues
//Table Alias
modelBuilder.Entity<Venue>().ToTable("DBSCHEMA.VENUES");
//Keys
modelBuilder.Entity<Venue>().HasKey(v => v.Id);
//Joins
modelBuilder.Entity<Venue>().HasMany(venue => venue.Courses);
//Fields
modelBuilder.Entity<Venue>().Property(v => v.Id).HasColumnName("VENUE_ID");
modelBuilder.Entity<Venue>().Property(v => v.Name).HasColumnName("VENUE_NAME");
#endregion
}
Vous devez vous connecter pour publier un commentaire.
Espère que c'est toujours à l'heure pour vous aider. J'ai été également avoir exactement le même problème et a été troublant avec elle pendant près d'une heure jusqu'à ce que je place mon erreur.
Le problème est que
Course.Venue
relation est en option (tel qu'il est déclaré sur l'API fluent), mais l'Id de la déclaration deCourse.VenueId
est obligatoire, vous pouvez donc faire VenueId en option en modifiant àou de modifier la relation obligatoire sur l'API fluent, et la OnModelCreating doit s'exécuter correctement une fois que vous avez changé.
Après recherche sur le web pour
Système.Les données.Edm.EdmAssociationType: : la Multiplicité des conflits avec la contrainte référentielle dans le Rôle
Gardé de venir avec ce post, voici donc mon problème et la solution:
J'ai mis à jour un grand projet de ef4.0 à ef4.1 à l'aide de la vs ef ingénierie inverse de l'extension. Notre mvc application à l'aide de metadatatype et partiels pour décorer ef4.0 objets.
Après la suppression de fichiers de la metadatatype le projet a commencé à travailler.
Le problème à la racine était attribut [Obligatoire] que ef objet poco a nullable et mon metadatatype avait [Obligatoire] sur la même propriété. Précédemment était de faire mvc règles de validation et maintenant ef4.1 a l'aide pour remplir les propriétés de navigation. La suppression [Obligatoire] off metadatatype résolu le problème.
j'ai eu du mal avec cette erreur dans mon projet de entity framework, j'ai résolu le problème en changeant les valeurs null valeur de VenueId.
Assurez-vous de ne pas utiliser HasKey() en combinaison avec HasOptional() dans votre mappages. Qui a été la cause de cette erreur dans mon cas.