2010-01-22 13 views
6

Tengo una tabla heredada que contiene el nombre del empleado y la identificación del empleado. Ahora la identificación del empleado está en char porque puede contener valores que comienzan con un alfabeto. La identificación del empleado es el único campo único disponible en la tabla.Cómo hacer que la cadena sea la clave principal en el marco de la entidad.

Ahora estoy usando una vista para capturar los datos de la tabla (está en una base de datos separada). Pero el marco de mi entidad se niega a identificar la vista debido a la falta de clave primaria int.

Cualquier solución a esto sería muy apreciada ya que no puedo tocar la tabla heredada.

Respuesta

5

Pero mi entidad marco se niega a identificar la vista debido a la falta de clave primaria int.

I duda it. El EF admite cadenas como PK.

Pero las vistas, por supuesto, no pueden tener PKs en absoluto. Lo que significa que tiene que hacer un trabajo extra cuando los usa con EF, especialmente si los hace actualizables. Here's how.

+2

Gracias Craig! Tu respuesta me ayudó a encontrar mi respuesta. La columna Id del empleado en la tabla heredada tiene la propiedad Permitir nulos como verdadera, por lo que el EF se negó a identificarla como PK. Una vez que lo quité todo funcionó bien. –

1

Cree otra columna que sea un int y utilícela como la clave principal. Los usuarios comerciales, no necesitan saber sobre esa clave.

Supongo que la aplicación final utiliza una identificación de empleado con chárter. Como primera y última fecha inicial de contratación, algo así como DB012210.

La forma en que se realiza la tabla internamente no afectará a la aplicación que realiza la llamada, por lo que puede agregar otro campo como la clave primaria real que es un int. Luego, simplemente ponga una restricción única en el EmployeeId actual, pero no lo use realmente como la clave principal.

+0

¡Hola David! Gracias por tu sugerencia. Lo intenté antes y funcionó perfectamente para mí. Pero como mencioné en mi pregunta, continuar con un cambio significativo con la tabla heredada no está permitido, ya que esa tabla está siendo utilizada por una gran aplicación ERP. –

Cuestiones relacionadas