Asp.net-Mvc
實體類型沒有定義鍵 - 程式碼優先
我是 MVC 以及實體框架的新手。我搜尋了很多並發現了一些類似的問題(例如Entity Type Has No Key Defined),但它們並沒有解決我的問題。
namespace MvcAppInvoice.Models { public class Customer { public int CustomerID { get; set; } public string FirstName { get; set; } public string SurName { get; set; } public virtual CustomerType Type { get; set; } } public class CustomerType { public int TypeId { get; set; } public string TypeName { get; set; } public virtual ICollection<Customer> customers { get; set; } } }
當我嘗試添加控制器時,它會出現以下錯誤:
Id通常,如果屬性名為or ,則程式碼優先按約定隱式設置實體類型的鍵TypeName+Id。在您的情況下,TypeId它們都不是,因此您應該使用KeyAttribute或使用流暢的語法,使用EntityTypeConfiguration.HasKey 方法將其明確標記為鍵
我有同樣的問題。在找到適合我的解決方案之前,我重新啟動了 3 次項目。我有一個手動創建的名為 UserContext 的公共類。當我執行嚮導添加 ADO 類時,嚮導生成了 UserContext 的部分類。我刪除了我的 usercontext 類,並修改了 VS 為我生成的類。
namespace UserLayer.Models { using System; using System.Data.Entity; using System.Data.Entity.Infrastructure; public class UserContext : DbContext { public DbSet<UserDetail> UserDetails { get; set; } } }現在它可能在沒有修改的情況下工作。也許刪除我的課程版本會起作用。我不知道。回想起來,當我嘗試添加控制器時遇到了您的錯誤。我懷疑這是 VS2012 中的一個錯誤,因為可以存在同名的部分類和公共類。目的是允許程序員擴展部分類的定義。

