2013-04-04 3 views
0

J'ai deux classe de modèle, où je veux faire une relation un-à-un. Quand je fais la migration, je reçois une erreur:Code le premier à une clé étrangère

The ALTER TABLE statement conflicted with the FOREIGN KEY constraint "FK_dbo.Uzytkownik_dbo.UserProfile_UserId". The conflict occurred in database "db_wydarzenia", table "dbo.UserProfile", column 'UserId'.

[Table("UserProfile")] 
    public class UserProfile 
    { 
     [Key] 
     [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)] 
     public int UserId { get; set; } 
     public string UserName { get; set; } 
    } 

    [Table("Uzytkownik")] 
    public class Uzytkownik 
    { 
     [Key] 
     public int UzytkownikID { get; set; } 

     public int UserId { get; set; } 

     public string Imie { get; set; } 
     public string Nazwisko { get; set; } 
     public string Telefon { get; set; } 
     public string Email { get; set; } 

     [ForeignKey("UserId")] 
     public UserProfile UserProfile { get; set; } 


    } 

EDIT: Problème résolu :) supprimer toutes les données de uzytkownik table et il est parti.

Répondre

0

Si vous voulez un-à-un - vous ne pouvez pas avoir à la fois la clé primaire et la clé étrangère spécifiée. Un-à-un est modélisé via les clés primaires (pk == pk), sinon il devient «multiplicité» (et juste un-à-plusieurs typique).

obtenir ce que vous voulez supprimer simplement votre autre PK - et l'utilisateur UserId à la fois primaire et fk ...

[Table("Uzytkownik")] 
public class Uzytkownik 
{ 
    // [Key] public int UzytkownikID { get; set; } 
    [Key] 
    public int UserId { get; set; } 
    [ForeignKey("UserId")] 
    public UserProfile UserProfile { get; set; } 
} 
+0

Ce WAS pas un problème. Je dois supprimer toutes les données de la table uzytkownik. Merci pour l'aide;) – user1031034

+0

mais vous n'avez pas de one-to-one - ce que vous avez est one-to-many - c'est la seule vraie solution pour la question – NSGaga

+0

oui, vous avez raison. – user1031034

Questions connexes