0

想到什麼做這樣的事情:我應該如何聲明與默認創建的MVC .NET會員/用戶表的外鍵(UserId)關係?

public class UserProfile 
{ 
    [Key] 
    [Column(Order = 0)] 
    [ForeignKey("User")] 
    public Guid UserId { get; set; } 

    public virtual User User { get; set; } 

    // Additional user info 
} 

但我收到此錯誤:

\tSystem.Data.Entity.Edm.EdmEntityType: : EntityType 'User' has no key defined. Define the key for this EntityType. \tSystem.Data.Entity.Edm.EdmEntitySet: EntityType: EntitySet 'Users' is based on type 'User' that has no keys defined.

我缺少什麼呢?無論如何編寫一個自動遷移到sql表(Code First)的類?

謝謝!

回答

0

如果不清楚主鍵是什麼,則只需要[鍵]註釋。但是慣例是它以id結尾的類名和你需要User類中的UserId屬性。因此,恕我直言,我覺得應該是這樣的:

public class UserProfile 
    { 
     [Key] 
     public UserProfileId 
     public Guid UserId { get; set; } 
     [ForeignKey("UserId")] 
     public virtual User User { get; set; } 
     // Additional user info 
    } 

What point I am missing? isn't there anyway to write a class that is automatically migrated to sql table (Code First)?

是當你的代碼需要的類將創建它使用,也可以使用腳手架。 我現在使用遷移工具來強制快速創建所有表。例如見這裏MSDN article about migration tool Blog about migration

+0

1)我需要[ForeignKey(「UserId」)]公共虛擬用戶用戶{獲取;組; } equals [ForeignKey(「User」)] public Guid UserId {get;組; } 2)我想用戶是外鍵+主鍵 3)我仍然得到相同的錯誤 –

+0

我不明白你的意思是:用戶是外鍵+主鍵。你的用戶主鍵必須像一個唯一的整數或唯一的字符串?現在你的用戶是一個對象。你能證明你想要你的桌子嗎? –

+0

MVC4爲您創建了幾個管理用戶的表格,例如用戶,會員,角色。用戶通過在這些表中找到的UserId鍵進行標識。我想有另一個引用UserId標識符的表來包含其他用戶信息。我想在我的Class中引用它,所以我將始終使用Code First方法遷移到數據庫。別介意外鍵+鍵。 –

相關問題