Primero el código de Entity Framework: la migración falla con la actualización de la base de datos, fuerza la migración innecesaria (?)

Tengo un efecto divertido utilizando la migración (EF 5.0) y el código primero:

He creado algunos modelos con claves primarias GUID. (Por cierto: es importante para mí, que utiliza SQL ServerNEWSEQUENTIALID(), que parece ser el valor por defecto en la versión actual)

En algún momento activé las migraciones. Agregué algo de código a la migración inicial, esto es principalmente.Index() según sea necesario.

Cuando elimino la base de datos y llamo update-database, aparece el siguiente error:

No se puede actualizar la base de datos para que coincida con el modelo actual porque hay cambios pendientes y la migración automática está deshabilitada. Escriba los cambios de modelo pendientes en una migración basada en código o habilite la migración automática. Establezca DbMigrationsConfiguration.AutomaticMigrationsEnabled en true para habilitar la migración automática. Puede usar el comando Agregar migración para escribir los cambios de modelo pendientes en una migración basada en código.

Lo intentéAutomaticMigrationsEnabled = true, que funcionó sin cambiar ni agregar nada!

Pero como no quieroAutomaticMigrationsEnabled, También traté de borrar la base de datos de nuevo, llamadoupdate-database y entoncesadd-migration. Terminé con una migración adicional que parece no cambiar nada (ver más abajo). También intenté agregar estas líneas al final de la migración inicial, pero esto no cambia nada.

Uno de los modelos:

[Table(Speaker.TABLENAME)]
public class Speaker : BaseModel
{
    public const String TABLENAME = "Speaker";

    [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public Guid Id { get; set; }

    [Required]
    [MaxLength(50, ErrorMessage = "Name must be 50 characters or less")]
    public string Name { get; set; }
}

El código de migración inicial:

public partial class InitialCreate : DbMigration
{
    public override void Up()
    {
        // [...]
        CreateTable(
            "dbo.Speaker",
            c => new
                {
                    Id = c.Guid(nullable: false, identity: true),
                    Name = c.String(nullable: false, maxLength: 50),
                })
            .PrimaryKey(t => t.Id)
            .Index(t => t.Name, true, false);   // added manually: unique Name
        // [...]
    }
}

internal sealed class Configuration : DbMigrationsConfiguration<MyProject.Repositories.DBContext>
{
    public Configuration()
    {
        AutomaticMigrationsEnabled = false;
    }

    protected override void Seed(MyProject.Repositories.DBContext context)
    {
        // ...
    }
}

A continuación se muestra el código creado por add-migration: no parece hacer nada nuevo. ¿Tal vez me esté faltando algo?

public partial class UnneccessaryMigration : DbMigration
{
    public override void Up()
    {
        // isn't this the exact same code from InitialMigrations?
        AlterColumn("dbo.Speaker", "Id", c => c.Guid(nullable: false, identity: true));
        // ...
    }

    public override void Down()
    {
        //...
        AlterColumn("dbo.Speaker", "Id", c => c.Guid(nullable: false));
    }
}

Así que tengo curiosidad: ¿qué hice para desorientar las migraciones? ¿Y qué puedo hacer para que funcione con una sola migración inicial?

Solución: La siguiente solución lo hizo por mí:

He eliminado la base de datos y todas las migraciones como se describe aquí:https://stackoverflow.com/a/11679386/3168401Enable-Migraciones ejecutadas + Add-Migración inicialFusionó mis cambios .Index () hechos a mano en el archivo. Ahora Update-Database funciona de nuevo, también repetidamente, al eliminar la base de datos.

Respuestas a la pregunta(3)

Su respuesta a la pregunta