0

我使用內置的帳戶控制器/模型/視圖創建了標準MVC 4應用程序。我現在試圖添加另一個控制器,但我想創建一個與現有用戶的外鍵關係,但即時獲取錯誤消息:MVC 4實體框架 - 用戶配置文件的外鍵

'MVC4App.Models.ListingModel'屬性'CreatedBy'上的ForeignKeyAttribute'無效。在依賴類型'MVC4App.Models.ListingModel'上未找到外鍵名'UserId'。名稱值應該是逗號分隔的外鍵屬性名稱列表。

上市模式代碼是:

using System; using System.ComponentModel.DataAnnotations.Schema;

namespace MVC4App.Models 
{ 
    public class ListingModel 
    { 
     [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)] 
     public int Id { get; set; } 

     public string Location { get; set; } 

     public string Instrument { get; set; } 

     public string Genres { get; set; } 

     public string Description { get; set; } 

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

     public DateTime CreatedOn { get; set; } 
    } 
} 

我在這裏錯過了什麼?或者有更好的方法我應該這樣做?

另外我假設我可以在用戶個人資料中添加額外的屬性,例如電子郵件地址或稍後在項目中指向頭像圖片的鏈接?

回答

4

你有用戶ID添加到您的實體:

namespace MVC4App.Models 
{ 
    public class ListingModel 
    { 
     [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)] 
     public int Id { get; set; } 

     public string Location { get; set; } 

     public string Instrument { get; set; } 

     public string Genres { get; set; } 

     public string Description { get; set; } 

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

     public DateTime CreatedOn { get; set; } 
    } 
} 
+0

不知道如何工作了問問題,但據'代碼First'而言,這是不可能的。因爲只有'每個表只有一個標識列' – Komengem

+0

我意識到這有點舊,但要回答@ komenge-mwandila,每個表只有一個標識列。 Id是標識列,而UserId只是一個int。當然,它是一個外鍵,它鏈接到一個列可能是一個標識列,但它只是一個int。 這真的不是實體框架相關,因爲你會看到這是一個時間,你希望有兩個表與身份列之間的外鍵,但希望這有助於澄清問題。 –