J'ai un problème avec le code EF 4.2 D'abord sur une base de données SQL existante.Code EF premier, clé étrangère composite avec partie statique
Je dispose de plusieurs entités comme l'entreprise, l'utilisateur, etc.
Informations communes sont stockées dans une table seprate appelée Entité clé primaire [entityID, EntityTypeId].
- entityID correspond à CorporateId, UserId, etc.
- EntityTypeId est un identifiant statique utilisé comme discrimiator entre les entités
J'ai la conception de classe suivante. Comme vous pouvez le voir, EntityTypeId est une propriété statique et il n'y a pas de colonne correspondante dans la table utilisateur.
Carte:
public UserMap()
{
// Primary Key
this.HasKey(t => t.Id);
// Table & Column Mappings
this.ToTable("User");
this.Property(t => t.Id).HasColumnName("UserId");
// Relationships
this.HasRequired(t => t.Entity)
.WithMany()
.HasForeignKey(p => new { p.Id, p.EntityTypeId }); //<-- Problem
}
public EntityMap()
{
// Primary Key
this.HasKey(t => new { t.Id, t.EntityTypeId });
// Table & Column Mappings
this.ToTable("Entity");
this.Property(t => t.Id).HasColumnName("EntityId");
this.Property(t => t.EntityTypeId).HasColumnName("EntityTypeId");
}
Quand je lance ce code, je reçois l'erreur: System.Data.SqlClient.SqlException: Nom de colonne non valide 'EntityTypeId'. Je suppose que c'est parce que la colonne EntityTypeId n'existe pas dans la table User. Y at-il un moyen de contourner ce problème, car je ne peux pas créer cette colonne sur la table?!
Merci beaucoup