one objects more failed ejemplo drop column because c# sql sql-server code-first

c# - objects - ALTER TABLE DROP COLUMN falló porque uno o más objetos acceden a esta columna



alter table drop column failed because one or more objects access this column. (2)

Debe eliminar las constraints de la columna antes de eliminar la columna. El nombre al que hace referencia es una default constraint .

p.ej

alter table CompanyTransactions drop constraint [df__CompanyTr__Creat__0cdae408]; alter table CompanyTransactions drop column [Created];

Estoy tratando de hacer esto:

ALTER TABLE CompanyTransactions DROP COLUMN Created

Pero entiendo esto:

Msg 5074, Nivel 16, Estado 1, Línea 2 El objeto ''DF__CompanyTr__Creat__0CDAE408'' depende de la columna ''Creado''. Msg 4922, Nivel 16, Estado 9, Línea 2 ALTER TABLE DROP COLUMN Error de creación porque uno o más objetos acceden a esta columna.

Esta es una tabla de código primero. De alguna manera, las migraciones se han desordenado y estoy intentando revertir manualmente algunos cambios.

No tengo idea de lo que es esto:

DF__CompanyTr__Creat__0CDAE408


La respuesta de @SqlZim es correcta, pero solo para explicar por qué esto puede haber ocurrido. He tenido un problema similar y esto fue causado por algo muy inocente: agregar valor predeterminado a una columna

ALTER TABLE MySchema.MyTable ADD MyColumn int DEFAULT NULL;

Pero en el ámbito de MS SQL Server, un valor predeterminado en una columna es un CONSTRAINT. Y como toda restricción tiene un identificador. Y no puede quitar una columna si se usa en un CONSTRAINT.

Entonces, lo que realmente puede hacer para evitar este tipo de problemas es darle a sus restricciones predeterminadas un nombre explícito , por ejemplo:

ALTER TABLE MySchema.MyTable ADD MyColumn int NULL, CONSTRAINT DF_MyTable_MyColumn DEFAULT NULL FOR MyColumn;

Aún tendrás que eliminar la restricción antes de eliminar la columna, pero al menos sabrás su nombre por adelantado .