2011-01-06 38 views
8

Tengo una tabla en la base de datos, con una columna que es simplemente un nvarchar (800).La propiedad 'texto' es parte de la información clave del objeto y no se puede modificar

Cuando trato de hacer:

try 
{ 
    UserTable = (from x in entities.userTable where x.uID == uID select x).Single(); 
    UserTable.DateCreated = DateTime.Now; 
    UserTable.text= newText; 
    Update(UserTable); 
} 

tengo la excepción de la captura: "The property 'text' is part of the object's key information and cannot be modified."

Cuando miro en la tabla, no veo nada en "clave" o "índice" . Entonces no es una clave, no entiendo por qué C# me está dando información incorrecta. Nada en SQL Management Studio dice nada acerca de que "texto" sea una clave o índice. ¿Qué debo hacer?

Respuesta

16

¿Hay un PK sobre la mesa? De lo contrario, EF utiliza todos los campos/columnas como parte de la "información clave".

+0

Oh, tienes razón, uID no es la clave, pensé que sí. Ahora uID es una clave principal. Sin embargo, todavía da la misma excepción. – Dexter

+0

Hmm, parece que Entity Framework no actualiza el archivo "modelo" cuando actualiza la base de datos. Todavía pensaba que 'texto' era una clave de antes. – Dexter

+0

Si hace clic con el botón derecho en el lienzo de edmx y selecciona el modelo de actualización de la base de datos, debería volver a ejecutar la clave. – lukiffer

0

Vea el modelo de datos haciendo doble clic en el archivo edmx debajo de la carpeta Modelos.

Asegúrate de que las teclas estén correctamente mapeadas. Si hace clic con el botón derecho en una columna, puede alternar la propiedad Clave de entidad. Una vez que la columna en cuestión no está marcada como clave de entidad, debe poder actualizar el valor.

0

seguir estos sencillos pasos

Paso 1: Compruebe si su mesa está teniendo columna de clave principal en la base de datos o no. Si no tiene ninguna clave principal, agregue una clave principal. Porque si no agregamos una clave principal a la tabla, la estructura de la entidad crea su propia colección de claves y agrega todas las columnas en ella.

Paso 2: abra su archivo .edmx para ver la asignación de objetos de tabla. Podrás ver que cada columna de la tabla tiene un icono como clave principal. Entonces escribe haz clic en tu página y actualiza .edmx desde la base de datos.

Paso 3: Si aún ve los mismos iconos de teclas principales en todas las columnas que en el nombre de la columna que desea actualizar uno por uno, vaya a la ventana de propiedades y establezca la propiedad Clave de la entidad en falso.

0

El problema aquí es que Entity Framework no puede realizar cambios en la clave principal de la tabla en particular. Ahora bien, si no ha especificado una clave primaria para su tabla, la entidad marco considerará todo como la clave principal y, por lo tanto, no podrá realizar cambios en la tabla. Lo que debe hacer es definir una clave principal en la tabla, eliminar la tabla de su modelo del navegador de modelos y luego volver a agregar la tabla en el modelo. Esto seguramente lo arreglará. Feliz codificación. ¡Aclamaciones!

Cuestiones relacionadas