El índice ya existe error en EF 4.3 Code First con anotaciones de datos

Estoy tratando de crear una base de datos de facturación con Entity Framework 4.3 usando Code First con anotaciones de datos, y recibo un error cada vez que intento crear mi base de datos. Aquí están los objetos con los que estoy tratando:

public class ClientBase
{
    [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int ClientID { get; set; }

    [Required]
    public string ClientName { get; set; }

    [Required]
    public bool IsActive { get; set; }

    [Required]
    public string ClientContactName { get; set; }

    [Required]
    public string ClientContactEmail { get; set; }

    public virtual List<PropertyBase> Communities { get; set; }
}

public class PropertyBase
{
    [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int PropertyID { get; set; }

    [ForeignKey("Client")]
    public int ClientID { get; set; }

    [Required, EnumDataType(typeof(BillingFrequency))]
    public BillingFrequency PropertyBillingFrequency { get; set; }

    [Required]
    public bool IsActive { get; set; }

    [Required]
    public string PropertyName { get; set; }

    public string PropertyStreet { get; set; }

    public string PropertyCity { get; set; }

    public string PropertyState { get; set; }

    public int PropertyZipCode { get; set; }

    public virtual ClientBase Client { get; set; }
}

No importa lo que intente hacer, siempre recibo este error:

The operation failed because an index or statistics with name 'IX_ClientID' already exists on table 'Property'.

He visto soluciones a esta pregunta con Fluent API, pero no he encontrado ninguna para las anotaciones de datos.

¿Alguien tiene alguna idea de cómo solucionar este problema?

EDITAR: Aquí está el código en DbContext:

public DbSet<ClientBase> ClientBases { get; set; }
public DbSet<PropertyBase> PropertyBases { get; set; }

protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
        base.OnModelCreating(modelBuilder);
    }

preguntado el 03 de mayo de 12 a las 20:05

Todo funciona para mí. no entiendo donde tabla 'Propiedad' proviene de esta configuración. -

¡Ay! Olvidé poner [Table("Property")] sobre la clase PropertyBase. -

¿Podría haber un activador ejecutándose en el servidor SQL que creó el índice? No tengo idea de dónde vendría (incluso el primero). -

Supongo que sí, pero ¿ha intentado asegurarse de que no tiene nada en la base de datos para empezar, y asegúrese de saber a dónde 'va' (cuál es su configuración para la conexión, defaultConnectionFactory, etc.), dónde obtiene errores? usando migraciones, o probado con eso? ¿Cómo llama al contexto, inicializa, etc.? Intente hacer un nuevo proyecto, una nueva conexión, etc., es decir, comience desde cero... -

1 Respuestas

Arreglado. Resultó que había olvidado que había otra clase que había creado que tenía una relación de clave externa con ClientBase. Olvidé traer eso a ClientBase como una propiedad virtual y Entity Framework no estaba contento conmigo. Cuando lo incluí, funcionó perfectamente.

¡Gracias a los dos por su ayuda!

contestado el 04 de mayo de 12 a las 14:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.