2016-08-06 14 views
0

ich eine Klasse „Freund“ bekamEF CodeFirst zusätzliche Spalte zu schaffen verstehen nicht, warum

public class Friend 
{ 
    [Key , Column(Order = 0)] 
    public string MeID { get; set; } 

    public ApplicationUser Me { get; set; } 

    [Key, Column(Order = 1)] 
    public string MyFriendID { get; set; } 

    public ApplicationUser MyFriend { get; set; } 

    public bool isFavorite { get; set; } 
} 

beim Erstellen der Datenbank, Sie fügt hinzu, eine zusätzliche Spalte „ApplicationUser_Id“, jeder bekam eine vernünftige Erklärung dafür, warum es ist das machen ?

Es tut mir leid, wenn es eine Anfängerfrage ist.

danke im voraus.

+0

Weil es der Primärschlüssel für 'ApplicationUser' ist, die der Typ für Ihre Immobilie ist' MyFriend' – user3185569

+0

@ user3185569 Sie haben eine Idee, was zu tun ist, um diese ApplicationUser_Id-Spalte loszuwerden? – Willy

+0

Ja. Überprüfen Sie die aktualisierte Antwort. – user3185569

Antwort

1

Es ist ein Beziehungsspalte Friend hat-a ApplicationUser. Damit diese Beziehung implementiert werden kann, muss die Datenbanktabelle Friend einen Fremdschlüssel ApplicationUser_Id haben, der der Primärschlüssel für den Typ ApplicationUser ist.

Um dieser Spalte loszuwerden, können Sie das [NotMapped] Attribut verwenden:

[NotMapped] 
public ApplicationUser MyFriend { get; set; } 
+0

danke das hat mein Problem gelöst – Willy

0

hinzufügen [ForeignKey("MyFriendID")] Attribut MyFriend Eigenschaft und [ForeignKey("MeID")] zu Me Eigenschaft

Wenn Sie C verwenden # 6 Sie nameof(MyFriendID) statt hartcodierte Zeichenfolge „MyFriendID“ (vorgeschlagen von @TGlatzer) verwenden können

+0

Und verwenden Sie "[ForeignKey (Name von (MyFriendId))]" anstatt – TGlatzer