0

我在單獨的項目中有實體。其中一個實體需要參照Web項目中的UserId,UserProfile模型,該項目已經參考了Entity項目。任何人都可以幫助得到一個新的外鍵,我的實體(像Expense實體類來獲得額外的領域Expender這已經是UserProfile主鍵是一個成員表?)ASP.NET MVC 4實體框架實體從成員資格用戶配置文件表中獲取外鍵字段

namespace ExpenseAssistant.Entities 
{ 
    /// <summary> 
    /// Expense 
    /// </summary> 
    public class ExpenseEntry 
    { 
     /// <summary> 
     /// Gets or sets Unique Id of the Expense 
     /// </summary> 
     public virtual int Id { get; set; } 

     /// <summary> 
     /// Gets or sets Description about the Expense 
     /// </summary> 
     public virtual string ExpenseDescription { get; set; } 

     /// <summary> 
     /// Gets or sets the Amount Spent 
     /// </summary> 
     public virtual float Amount { get; set; } 

     /// <summary> 
     /// Gets or sets the Expender which is the UserId from UserProfile Table 
     /// </summary> 
     [ForeignKey("UserProfile")] 
     public virtual int ExpenderId { get; set; } 
    } 
} 

成員表是在同一個數據庫中我有所有的實體表。

update-database控制檯試過之後加入該鍵ExpenderIdExpenseEntry實體,我得到如下錯誤,

的ForeignKeyAttribute財產「ExpenderId」在類型 「ExpenseAssistant.Entities.ExpenseEntry」無效。在依賴類型 'ExpenseAssistant.Entities.ExpenseEntry'上沒有找到導航 屬性'UserProfile'。名稱值應該是 有效的導航屬性名稱。

在此先感謝。

回答

1

有兩個問題。

第一個問題是該屬性是用於導航屬性(您似乎沒有)。

這樣的導航屬性的一個例子是:

public virtual UserProfile Expender { get; set; } 

的第二個問題是,傳遞給ForeignKeyAttribute構造函數的名稱必須是包含在這個類外鍵的屬性的名稱,而不是由外鍵引用的表或實體的名稱。

這是你的代碼應該是什麼樣子:

public virtual int ExpenderId { get; set; } 

[ForeignKey("ExpenderId")] 

public virtual UserProfile Expender { get; set; } 
+0

我都以不同的方式解決了這個問題!從現有的表格中,使用模型圖,我創建了一個關係。在逆向工程之後,我從控制檯運行update-database命令。有效!不管怎樣,謝謝! –