La introducción de la restricción FOREIGN KEY en la tabla puede causar ciclos o varias rutas de acceso en cascada que hacen que Database.SetInitializer no funcione?

Mi base de datos de código primero estaba funcionando muy bien. Si realizo un cambio en el contexto de mi base de datos, la base de datos se actualizará la próxima vez que inicie la aplicación. Pero luego agregué algunos modelos a la base de datos y obtuve este error cuando reinicié mi aplicación:

Introducing FOREIGN KEY constraint 'FK_OrderDetails_Orders_OrderId' on table 'OrderDetails' may cause cycles or multiple cascade paths. Specify ON DELETE NO ACTION or ON UPDATE NO ACTION, or modify other FOREIGN KEY constraints. Could not create constraint. See previous errors.

Una de las cosas extrañas es que si vuelvo a iniciar la aplicación sin cambiar nada, recibo este error:

Model compatibility cannot be checked because the database does not contain model metadata. Model compatibility can only be checked for databases created using Code First or Code First Migrations.

Para que el primer error vuelva a ocurrir, debo eliminar mis archivos .mdf y .ldf (la base de datos) y reemplazar solo el archivo .mdf con una copia de mi historial de revisiones.

¿Por qué en el mundo está sucediendo esto?

Para referencia:

Mi archivo Global.asax.cs tiene esto dentro delApplication_Start() método:

Database.SetInitializer<EfDbContext>(new EfDbContextInitializer());

Que se parece a esto:

public class EfDbContextInitializer : DropCreateDatabaseIfModelChanges<EfDbContext>
{
    protected override void Seed(EfDbContext context)
    {
        var orders = new List<Order>
            {
                . . .
            };
        orders.ForEach(s => context.Orders.Add(s));
         . . . etc. . .
        context.SaveChanges();
    }
}

Mi cadena de conexión deWeb.config:

<add name="EFDbContext" connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;database=pos;AttachDBFilename=|DataDirectory|pos.mdf;MultipleActiveResultSets=true;User Instance=true" providerName="System.Data.SqlClient" />

Y, finalmente, mis modelos Order y OrderDetails (a los que hace referencia directamente el primer error):

public class Order
{
    public int OrderId { get; set; }

    public List<OrderDetail> OrderDetails { get; set; }

    public int EstablishmentId { get; set; }

    public virtual Establishment Establishment { get; set; }
}

public class OrderDetail
{
    public int OrderDetailId { get; set; }

    public int OrderId { get; set; }

    public int ProductId { get; set; }

    public int Quantity { get; set; }

    public decimal UnitPrice { get; set; }

    public virtual Product Product { get; set; }

    public virtual Order Order { get; set; }
}

Actualización / Nota: Si comento fuerapublic int OrderId { get; set; } en mi clase OrderDetail, el proyecto comienza bien (aunque no tengo la capacidad deseada para agregar unOrderId (por supuesto).

Respuestas a la pregunta(2)

Su respuesta a la pregunta