Estoy usando EF 4.3.1 Primero las migraciones de código. Tengo una tabla como:Migraciones de EF: Mover la tabla de 2 Columna PK a Columna única causa ALTER antes de DROP y falla
public class Product
{
[Key]
[Column(Order=0)]
[MaxLength(100)]
public string Store { get; set; }
[Key]
[Column(Order=1)]
[MaxLength(100)]
public string Sku { get; set; }
}
Tengo una tabla existente creada con el código anterior. Luego me mudé a una clave principal de una sola columna:
public class Product
{
[MaxLength(100)]
public string Store { get; set; }
[Key]
[MaxLength(100)]
public string Sku { get; set; }
}
Esto provoca EF falle en la próxima migración automática, quejándose:
ALTER TABLE [producto] modifica la columna [tienda] nvarchar
El objeto 'PK_Product' depende de la columna 'Almacenar'. ALTER TABLE ALTER COLUMN Error en la tienda porque uno o más objetos acceden a esta columna .
Claramente, se debe eliminar el PK_Product antes de intentar activar esta instrucción ALTER (¿por qué está alterando la columna?), Pero en su lugar falla la migración.
¿Estoy haciendo algo mal o es esto un error? ¿Soluciones provisionales?
Add-Migration pregenera los comandos anteriores (y más). Resulta que simplemente estaban fuera de servicio: moviendo DropPrimaryKey como lo has hecho aquí antes del cambio de columna, se resolvió. Entonces, para que quede claro, la migración final fue DropPrimaryKey, AlterColumn, AddPrimaryKey. Creo que esto es un error en Migrations dada la simplicidad de la solución, más que una limitación inherente. –
Sí, de ahí mi ** negrita ** en el "después" :-) –