2013-10-22 16 views
5

Mam 2 modele i chcę utworzyć relację klucza obcego. Zasadniczo każda uwaga powinna być przypisana do użytkownika.Ustawianie klucza obcego w ASP.NET MVC 4

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

[Table("UserNotes")] 
public class UserNotes 
{ 
    [Key] 
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)] 
    public int NoteId { get; set; } 

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

    public string Title { get; set; } 
    public string Content { get; set; } 
    public string Added { get; set; } 
    public DateTime? Edited { get; set; } 
} 

Gdy próbuję dodać nową notatkę użytkownika uzyskać: ForeignKeyAttribute na własność „userid” typu „note.DO.Models.UserNotes” nie jest poprawny. Właściwość nawigacji "UserProfile" nie została znaleziona w zależnym typie "note.DO.Models.UserNotes". Wartość Nazwa powinna być prawidłową nazwą właściwości nawigacji.

Próbowałem wielu kombinacji, w tym tych znalezionych w podobnych pytań, ale żaden z nich nie działał.

+0

Czy ma to coś wspólnego z asp.net? –

Odpowiedz

15

Spróbuj tego:

public virtual int UserId { get; set; } 

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

ten sposób można powiązać właściwość klucza obcego z własności nawigacji.

Edit: Można również napisać to tak:

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

public virtual UserProfile UserProfile { get; set; } 

Te dwa fragmenty daje ten sam rezultat. Twój komunikat o błędzie mówi, że brakuje właściwości "UserProfile", po prostu musisz ją dodać.

+0

Dlaczego musimy używać wirtualnego słowa kluczowego podczas deklarowania kluczy obcych? Czy masz szansę na odpowiedź? – ObedMarsh