2016-10-22 4 views
0

Ich versuche, 1-n-Beziehung mit Entity Framework Code ersten Ansatz zu erstellen. Im Folgenden sind meine KlassenCode ersten Ansatz nicht Fremdschlüssel erstellen

public class User 
{ 

    [Key] 
    public int UserID { get; set; } 


    //public virtual Vote Vote { get; set; } 
    [Required] 
    public string Name { get; set; } 
    [Required] 
    public string Email { get; set; } 
    [Required] 
    public string Bio { get; set; } 
    [Required] 
    public string Education { get; set; } 
    [Required] 
    public string Experience { get; set; } 

    public string Password { get; set; } 

} 

und folgende ist meine zweite Klasse

public class Vote 
{ 
    [Required] 
    [Key] 
    public int VoteID { get; set; } 

    [ForeignKey("UserID")] 
    [Required] 
    public virtual User User { get; set; } 

    //public virtual int UserID { get; set; } 

    [Required] 
    public int VoteCount { get; set; } 
    [Required] 

    public int UserID { get; set; } 


} 

der Benutzer und die Abstimmung und 1-n-Beziehung, in meinem Fall, was ich meine ist, dass UserID Fremdschlüssel in Abstimmung Tisch sein sollte . Aber wenn ich die Schaffung db mit folgenden Befehlen getan

enable-migrations -ContextTypeName ProfileOne.PO -Force 

    Add-migration PO 

    update-database 

Ich bin keine Fremdschlüssel oder Spaltennamen bekommen UserID

Jede mögliche Hilfe geschätzt wird, warum ich nicht in der Lage bin das Ergebnis zu erzielen.

+1

Dies sollte eine 'Vote' Tabelle mit' UserID' erstellen. Aber die Beziehung ist 1-n (Benutzer hat viele Stimmen), nicht 1-1. Wenn 'UserID' nicht erstellt wurde, ist etwas anderes falsch im Code, den wir nicht sehen können. –

+0

Ich würde an dieses Szenario glauben EF erwartet eine Eins-zu-Eins-Beziehung. Abhängig von der EF-Version kann das Attribut ignoriert werden, da die Konvention den PK als FK in einer solchen Beziehung verwendet. – DevilSuichiro

+0

Dies sollte den Fremdschlüssel erstellen. Uns fehlt hier ein Teil des Puzzles. Einfach genug, um ein [MCVE] für diese Art von Problem zu erstellen. –

Antwort

1

Versuchen Sie, den folgenden Ansatz zu verwenden:

public class User 
{ 
    [Key] 
    public int UserID { get; set; } 

    [Required] 
    public string Name { get; set; } 

    [Required] 
    public string Email { get; set; } 

    [Required] 
    public string Bio { get; set; } 

    [Required] 
    public string Education { get; set; } 

    [Required] 
    public string Experience { get; set; } 

    public string Password { get; set; }   


    //Navigation properties 
    public virtual ICollection<Vote> Votes { get; set; } 
} 


public class Vote 
{ 
    [Key] 
    public int VoteID { get; set; } 

    [Required] 
    public int VoteCount { get; set; } 


    //Foreign key for User 
    [Required] 
    public int UserID { get; set; } 

    //Navigation properties 
    public virtual User User { get; set; } 
} 


Für weitere Informationen, haben einen Blick auf Entity Relationships. Hoffe, das hilft ...

-1

Ändern Sie sind Klassen wie folgt aussehen:

public class User 
{ 
    [Key] 
    public int UserID { get; set; } 

    [Required] 
    public string Name { get; set; } 

    [Required] 
    public string Email { get; set; } 

    [Required] 
    public string Bio { get; set; } 

    [Required] 
    public string Education { get; set; } 

    [Required] 
    public string Experience { get; set; } 

    public string Password { get; set; } 

    public virtual Vote Vote { get; set; } 
} 

public class Vote 
{ 
    [Required] 
    [Key] 
    public int VoteID { get; set; } 

    [Required] 
    public int VoteCount { get; set; } 

    [Required] 
    public int UserID { get; set; } 

    //[ForeignKey("UserID")] 
    //[Required] 
    public virtual User User { get; set; } 
} 

Die Beziehung zwischen zwei Entitäten, die von den virtuellen Eigenschaften definiert, die u sie kommentiert.

+1

Nein. Die Attribute sind redundant (die Namenskonventionen machen das gleiche), aber * sicherlich * nicht falsch. Noch ist der 'virtuelle' Modifikator erforderlich. –

Verwandte Themen