2013-10-22 99 views
5

我有2個模型,並且想創建一個外鍵關係。基本上每個筆記都應該分配給用戶。在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; } 
} 

當我嘗試添加新的用戶注意到我得到: 的ForeignKeyAttribute財產「用戶ID」的類型「note.DO.Models.UserNotes」是無效的。在依賴類型'note.DO.Models.UserNotes'上找不到導航屬性'UserProfile'。名稱值應該是有效的導航屬性名稱。

我已經嘗試了很多組合,包括那些在類似問題中發現的組合,但他們都沒有工作。

+0

這和asp.net有什麼關係嗎? –

回答

15

試試這個:

public virtual int UserId { get; set; } 

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

這樣,你配對外鍵屬性與導航性能。

編輯:你也可以寫這樣的:

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

public virtual UserProfile UserProfile { get; set; } 

這兩個片段給出了相同的結果。您的錯誤消息說「UserProfile」屬性丟失,您只需添加它。

+0

爲什麼我們需要在聲明外鍵時使用virtual關鍵字?你有可能回答這個問題嗎? – ObedMarsh