2016-07-22 47 views
0

嘗試創建控制器時出現以下錯誤。無法使用Entity Framework創建控制器

有運行所選擇的代碼發生器的錯誤:

ProjectName.DataContexts.Estadistica:「無法檢索元數據爲‘ProjectName.Models.Tecnologia’模型生成期間檢測到一個或多個驗證錯誤:的EntityType 「ESTADÍSTICA」 沒有已定義的鍵定義此的EntityType關鍵 Estadisticas:。的EntityType:EntitySet的: 「Estadisticas」 是基於不具有定義的關鍵碼類型 「ESTADÍSTICA」

類TECNOLOGIA:

public class Tecnologia 
{ 
    public int ID { get; set; } 
    public string Nombre { get; set; } 
    public List<Usuario> TutoresCorrectores { get; set; } 
    public List<FichaProyecto> FichasProyecto { get; set; } 
} 

類ESTADÍSTICA

public class Estadistica 
{ 
    public int Cantidad { get; set; } 
    public int Porcentaje { get; set; } 
} 

類DataContexts.GestionProyectodbContext

public class GestionProyectodbContext : DbContext 
{ 
    public GestionProyectodbContext() : base("DefaultConnection") 
    { 

    } 
    public DbSet<Carrera> Carreras { get; set; } 
    public DbSet<Comentario> Comentarios { get; set; } 
    public DbSet<EstadoFicha> Estados { get; set; } 
    public DbSet<FichaProyecto> FichasProyectos { get; set; } 
    public DbSet<Grupo> Grupos { get; set; } 
    public DbSet<InformeAvance> InformesAvance { get; set; } 
    public DbSet<InstanciaAcademica> InstanciasAcademicas { get; set; } 
    public DbSet<InstanciaEvaluacion> InstanciasEvaluacion { get; set; } 
    public DbSet<PropuestaProyecto> PropuestasProyectos { get; set; } 
    public DbSet<Reunion> Reuniones { get; set; } 
    public DbSet<Rol> ListaRoles { get; set; } 
    public DbSet<Tecnologia> Tecnologias { get; set; } 
    public DbSet<TipoAplicacion> TiposAplicaciones { get; set; } 
    public DbSet<TipoCliente> TiposClientes { get; set; } 
    public DbSet<TipoProyecto> TiposProyectos { get; set; } 
    public DbSet<Usuario> Usuarios { get; set; } 
    public DbSet<InformeTarea> InformesTareas { get; set; } 
    public DbSet<Documento> Documentos { get; set; } 
    public DbSet<InformeCorreccion> InformesCorreccion { get; set; } 
} 

可以看出,類 「ESTADÍSTICA」 不具有 「ID」 的道具,但那是因爲我不想將其保存在數據庫中。 Id甚至不在「GestionProyectodbContext」類中,所以它不應該是一個問題。但是,當試圖創建一個控制器類「Tecnologia」,一個錯誤說「Estadistica」沒有關鍵彈出。我不知道爲什麼會出現這個錯誤,如果你知道爲什麼會發生這種情況,我會幫助你。 PD:「Tecnologia」級甚至沒有提到「Estadistica」類。 PD2:我知道如何解決這個錯誤,但這不是我應該這樣做的方式,因爲我不想將一個「ID」屬性添加到不想保留在數據庫中的類中。

+0

嘗試把數據註解'[關鍵]''以上Cantidad' –

+0

你必須有一個映射實體引用這個類...添加NotMappedAttribute到它。 –

+0

你想使用EF創建一個控制器嗎?或者你剛剛爲讀/寫操作創建一個控制器還是一個空的控制器? –

回答

0

您必須有一個映射實體參考Estadistica將NotMapped屬性應用於它。

,你也可以用流利的API忽略它:

protected override void OnModelCreating(DbModelBuilder modelBuilder) { 
    modelBuilder.Ignore<Estadistica>(); 
} 
+0

這工作!謝謝 (: –

0

EF只有當它知道了表的主鍵,在默認情況下它承認與名Id主鍵,但如果你沒有在你的表有Id列名稱,然後裝飾它的主鍵與[Key]屬性適用。

public class Estadistica 
{ 
    [Key] 
    public int Cantidad { get; set; } 
    public int Porcentaje { get; set; } 
} 

希望它有幫助。

+0

可能希望添加using語句以及允許在答案中使用數據註釋的相應名稱空間,因爲OP似乎沒有在任何類中使用數據註釋。 –

+0

這就是事情,我不想在我的數據庫上堅持這張表,我甚至不想爲這個類創建一個控制器 –

+0

FichaProyecto或Usuario,做任何這些實體使用Estadistica實體?! –