架构中的每个类型名称必须是唯一的。代码优先

时间:2017-06-28 19:53:23

标签: c# entity-framework ef-code-first

我正在尝试更新我的数据库代码,但是在运行add-migration命令

后出现此错误
One or more validation errors were detected during model generation:

ServicioTest.ErrorDispositivo: Name: Each type name in a schema must be 
unique. Type name 'ErrorDispositivo' is already defined.

我尝试了很多可能的解决方案:

  • 清理并重建
  • 删除数据库中的迁移文件夹和表
  • 更改连接字符串名称
  • 删除bin文件夹,然后重建

但是不起作用。

我的数据是

public class ModeloDatos : DbContext
{

    public ModeloDatos()
        : base("name=ModeloDatos")
    {
    }
    public virtual DbSet<Dispositivos> Dispositivos { get; set; }
    public virtual DbSet<Solicitud> Solicitudes { get; set; }
    public virtual DbSet<Aplicacion> Aplicaciones { get; set; }
    public virtual DbSet<Log> Logs { get; set; }
    public virtual DbSet<ErrorDispositivo> ErroresDispositivo { get; set; }
    public virtual DbSet<FormatoTemplate> FormatosTemplate { get; set; }
}

[Table("Dispositivos")]
public class Dispositivos
{
    [Key]
    public string DispositivoID { get; set; }

    //propiedad de navegacion
    public virtual ICollection<Solicitud> Solicitudes { get; set; }
}



[Table("Solicitudes")]
public class Solicitud
{
    //primary key
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int SolicitudID { get; set; }
    public DateTime Fecha { get; set; }
    public string Ip { get; set; }


    public string DispositivoID { get; set; }
    [ForeignKey("DispositivoID")]
    public virtual Dispositivos Dispositivo { get; set; }


    public Respuesta DatosRespuesta { get; set; }


}


[Table("Aplicaciones")]
public class Aplicacion
{
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int Id { get; set; }

    public string Usuario { get; set; }

    [DataType(DataType.Password)]
    public string Clave { get; set; }

    public Guid Codigo { get; set; }

    public bool Habilitado { get; set; }

}

[Table("Logs")]
public class Log
{
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int Id { get; set; }
    public string Descripcion { get; set; }
    public string StackTrace { get; set; }
}

[ComplexType]
public class Respuesta
{

    public string Codigo { get; set; }
    [ForeignKey("Codigo")]
    public virtual ErrorDispositivo TipoErrorDispositivo { get; set; }


    public string Mensaje { get; set; }
    public string FingerPrint1 { get; set; }
    public string FingerPrint2 { get; set; }


}

[Table("ErrorDispositivos")]
public class ErrorDispositivo
{
    [Key]
    public string Codigo { get; set; }
    public string Descripcion { get; set; }
}


[Table("FormatoTemplates")]
public class FormatoTemplate
{
    [Key]
    public int Codigo { get; set; }
    public string Formato { get; set; }
}

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

我认为问题在于复杂的类型和

public virtual ErrorDispositivo TipoErrorDispositivo { get; set; }

您不能在复杂类型中拥有导航属性。这应该被拉出到需要这种关系的实体。