2014-03-04 46 views
0

我做這個 -控制器想關鍵還是如果新類是基於另一個類

文件 - >新建項目 - >的Visual C#.NET框架4.5。 - > ASP.Net MVC 4 Web應用程序。

我創建一個類Personne和Personne派生類Etudiant

Personne.cs

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 

namespace TestTryHelper.Models 
{ 
    public class Personne 
    { 
     public int PersonneId { get; set; } 
     public string Nom { get; set;} 
     public string Prenom { get; set; } 

    } 

    public class Etudiant : Personne 
    { 
     public string Ecole { get; set; } 
    } 
} 

我嘗試添加的HomeController(控制器/ ADD /控制器(在模型文件夾中) )

控制器名稱:HomeController的 Scalfolding選項 模板:使用實體Frameworkd 型號氯MVC控制器的讀/寫操作和視圖驢:Etudiant(TestTryHelper.Models) 數據上下文類:
在窗口中新建數據上下文TestTryHelper.Models.TestTryHelperContext 單擊確定 瀏覽次數:剃刀
單擊添加

我得到這個錯誤消息

Unable to retrieve metadata for 'TestTryHelper.Models.Etudiant'. 
One or more validation errrors were detected during mode generation: 

-System.Data.Entity.Edm.EdmEntity,Type: EntityType 'Etudiant' 
has no key defined. Define the key for this EntityType. 
-system.Data.Entity.Edm.EdmEntitySet: EntityType: EntitySet ' Etudiants' is based on type  
'Etudiant that has no keys defined. 

由於某種原因,它爲其他人工作。我可以通過在Etudiant類下添加EtudiantId來解決此問題。

任何人都知道爲什麼它對某些人而不是其他人有用?

感謝

回答

1

如果您更改屬性PersonneId只是Id,我認爲它會爲這兩種類型的工作。另外,裝飾PersonneId屬性與[Key]屬性,它指示EF要作爲表鍵使用什麼屬性:

public class Personne 
{ 
    [Key] 
    public int PersonneId { get; set; } 
    public string Nom { get; set;} 
    public string Prenom { get; set; } 

} 

您可能還需要添加到您的代碼的頂部:

using System.ComponentModel.DataAnnotations; 
+0

我試過只有Id而不是PersonneId,並且它的工作效果很好。我想嘗試你的其他選擇,但我可以弄清楚如何把鑰匙[]你可以告訴我如何做到這一點請。謝謝 – user3127986

+1

我已經更新了我的答案。 –

+0

您的兩個解決方案都解決了我的問題。感謝您的慷慨幫助。 – user3127986

相關問題