无法使用Entity Framework创建控制器

时间:2016-07-22 17:02:21

标签: c# asp.net asp.net-mvc entity-framework

尝试创建控制器时出现以下错误。

  

运行所选代码生成器时出错:“无法检索”ProjectName.Models.Tecnologia“的元数据。在模型生成期间检测到一个或多个验证错误:

     

ProjectName.DataContexts.Estadistica:EntityType“Estadistica”没有定义键。定义此EntityType的键。   Estadisticas:EntityType:EntitySet:“Estadisticas”基于类型“Estadistica”,没有定义键。

Class 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; }
}

Class Estadistica

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

Class 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; }
}

如图所示,“Estadistica”类没有“ID”道具,但这是因为我不想在数据库中保留它。 Id甚至不在“GestionProyectodbContext”类中,所以它应该不是问题。但是当试图创建一个控制器类“Tecnologia”时,出现了一个错误,即“Estadistica”没有键。我不知道为什么会出现这个错误,如果你知道为什么会这样,我会帮助你。 PD:“Tecnologia”课程甚至没有提到“Estadistica”课程。 PD2:我知道如何解决这个错误,但这不是我应该这样做的方式,因为我不想将“ID”属性添加到我不想在数据库中持久化的类中。 / p>

2 个答案:

答案 0 :(得分:0)

EF仅在知道表的主键时才有效,默认情况下,它会识别名为Id的主键,但如果您的表中没有Id列名称然后使用[Key]属性装饰其主键。

public class Estadistica
{
    [Key]
    public int Cantidad { get; set; }
    public int Porcentaje { get; set; }
}
希望它有所帮助。

答案 1 :(得分:0)

您必须有一个引用py -3.4 setup_py2exe.py py2exe的映射实体将NotMapped属性应用于它。

你也可以使用流畅的api忽略它:

Estadistica