Je suis en train de changer l'arrière-plan d'une application existante à utiliser le code Entity Framework Première. J'ai utilisé l'outil intégré dans Visual Studio 2015 pour générer des classes POCO basées sur ma base de données existante. Cela a fonctionné parfaitement pour la plupart, à l'exception de deux classes, avec une relation un-à-zéro ou un. Ce sont mes cours (simplifié):Entity Framework one-to-zéro ou une association clé étrangère
public class Login
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public int TeamMemberId { get; set; }
public virtual TeamMember TeamMember { get; set; }
}
public class TeamMember
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public virtual Login Login { get; set; }
}
Avec la configuration suivante:
public class LoginTypeConfiguration : EntityTypeConfiguration<Login>
{
public LoginTypeConfiguration()
{
this.HasRequired(e => e.TeamMember)
.WithOptional(e => e.Login);
this.Property(e => e.TeamMemberId)
.HasColumnName("TeamMember_Id");
}
}
Il en résulte la migration suivante:
CreateTable(
"dbo.Logins",
c => new
{
Id = c.Int(nullable: false, identity: true),
TeamMember_Id = c.Int(nullable: false),
})
.PrimaryKey(t => t.Id)
.ForeignKey("dbo.TeamMembers", t => t.Id)
.Index(t => t.Id);
Pour une raison EF crée une clé étrangère sur [Logins].[Id]
au lieu de [Logins].[TeamMember_Id]
. Je l'ai déjà essayé décorer ma propriété de navigation avec un attribut ForeignKey
, mais cela n'a pas fonctionné. Est-il possible de l'obtenir pour créer une clé étrangère sur la place [Logins].[TeamMember_Id]
?
OMG. J'ai ce problème exact. Avez-vous eu de la chance de le découvrir? –