EntityType ‘…’ has no key defined. Define the key for this EntityType …MVC 4

Continuando con Visual Studio 2010 y MVC 4, al ejecutar la aplicación me arrojó varios errores de este tipo:

One or more validation errors were detected during model generation:

\tSystem.Data.Entity.Edm.EdmEntityType: : EntityType ‘UserProfile’ has no key defined. Define the key for this EntityType.
….

\tSystem.Data.Entity.Edm.EdmEntitySet: EntityType: EntitySet ‘UserProfiles’ is based on type ‘UserProfile’ that has no keys defined.

Al parecer el generador de entidades EF 4.x DbContest para C# aún tiene ciertas deficiencias.

Para corregir este error hay que editar las clases que se indican y agregar la anotación [Key] antes del campo de llave primaria así:

….
[Key]

public int UserId { get; set; }

Le pedirá que agregue el namespace

System.ComponentModel.DataAnnotations

Es todo…. ¡saludos!

 

 

The type ‘…’ was not mapped… MVC 4

Tengo Visual Studio 2010 e instalé el complemento de MVC 4. Generé mi aplicación MVC 4 y generé al ADO.NET EntityObject desde una conexión de base de datos. La tabla UserProfile fue cambiada agregando más campos personalizados.

Al ejecutar ka aplicación por default y tratar de ingresar a la sección login me arrojaba el siguiente error:

“The type ‘….Models.UserProfile’ was not mapped. Check that the type has not been explicitly excluded by using the Ignore method or NotMappedAttribute data annotation. Verify that the type was defined as a class, is not primitive, nested or generic, and does not inherit from EntityObject.”

Resulta que el MVC 4 no acepta clases entidades heredadas del tipo EntityObject. Para corregir este error hay varias formas, pero la más “fácil” es la de instalar el complemento “EF 4.x DbContext Generator for C#” que se puede descargar aquí.

Una vez instalado y reiniciado el VS 2010 procede a seguir las instrucciones indicadas en dicha página: se da click derecho sobre el editor modelo .edmx , se selecciona Add Code Generation Item… y en Installed Templates -> Visual C# -> Code, se selecciona EF 4.x DbContext Generator. Se le da un nombre al modelo y se pulsa el botón Add.

Manda un aviso de Security Warning, que puede ser ignorado pulsando “OK”. Y listo Crea un modelo de datos con la extensión .tt con clases por separado de las entidades de la base de datos.

Listo, el error antes descrito se fue.

¡Saludos!

 

 

El idioma de instalación elegido para SQL Express no coincide con el idioma de formato del sistema…

Al querer instalar Server Express 2008 R2 en un servidor Windows Server 2003 el instalador abortaba la instalación con el siguiente mensaje:

“El idioma de instalación elegido para SQL Express no coincide con el idioma de formato del sistema. En el Panel de control, vaya al cuadro de diálogo Configuración regional y de idioma, elija la pestaña Formatos, actualice el idioma del formato e intente realizar de nuevo la instalación.”

Resulta que el instalador espera que el idioma o la configuración regional sea Español(España) y no otro idioma español. En mi caso el servidor estaba configurado como Español(México) y por eso no instalaba el software.

Fue necesario cambiar el idioma regional por el momento a Español(España) para que el instalador hiciera su trabajo.

¡Saludos!

 

Mensaje disco Centos no encontrado al instalar CentOS 6.4

Me dispuse a realizar una instalación limpia de CentOS 6.4 en un servidor “viejito”, un eserver de IBM. La arquitectura del servidor es de 32 bits, así que me descargué el CD de instalación mínima (el servidor no cuenta con DVD): CentOS-6.4-i386-minimal.iso.

Quemé el CD, lo inserté en el dispositivo y comenzó la instalación. Todo bien, me pidió una prueba del CD de instalación para detectar si tenía errores. Una ves terminado el test del CD me mando el mensaje de que no encontraba el CentOS en ninguna de mis unidades de CD/DVD.

Después de varios reintentos, me puse a consultar el google y me encontré éste documento.

Resulta que desde la versión 5.x el CentOS tiene un bug en los discos de instalación y para evitar el mensaje es necesario saltar el paso de verificación del CD. Lo llevé a cabo y ¡listo!, el servidor ya tiene el CentOS 6.4 instalado.

¡Saludos!

ORA-39070: Unable to open the log file.

Al intentar importar un respaldo de una base de datos en Oracle 11g versión 11.2 sobre windows server  con el comando impdp me mandaba los siguientes errores:

ORA-39002: invalid operation
ORA-39070: Unable to open the log file.
ORA-29283: invalid file operation
ORA-06512: at “SYS.UTL_FILE”, line 488
ORA-29283: invalid file operation

Cabe aclarar que el archivo dmp a importar estaba en una unidad de red montada como drive Z: y dicha unidad estaba dado de alta como un Directory de Oracle.

El problema se debe a que al ejecutar el comando impdp lo ejecuta con el usuario que inició el servicio de oracle (usuario del sistema) y no con el usuariode windows que ejecuta el comando,  por lo tanto dicho usuario del sistema no tiene permisos de escritura ni lectura sobre la unidad de red.

La solución es parar el servicio de oracle e iniciarlo con el usuario con el que se autentifica en windows y que tiene permisos tanto de escritura sobre la unidad como de ejecutar el comando impdp:

Inicio -> Ejecutar -> Services.msc -> OracleServiceXXXX -> Propiedades -> Log On

Una vez que termine de importar el respaldo, puede regresar el servicio de oracle a que sea ejecutado por el usuario del sistema.

Espero les sirva este tip.

 

 

ERROR: could not access file “$libdir/postgis-2.0″: No such file or directory

Este error me lo mandó POSTGIS cuando, sin enterarme, CentOS 6 actualizó la versión de POSTGIS  de 2.0 a 2.1 que tenía instalada en mi base de datos postgres 9.2.

En mi caso, había instalado el POSTGIS como una extensión. Y según la documentación se debería actualizar con un soft-upgrade utilizando el comando ALTER EXTENSIO. Sin embargo al ejecutarla me mandaba el error antes mencionado.

La solución que me resultó fue la siguiente: hice dos soft links como se muestra enseguida (su directorio de instalación puede variar)

sudo ln -s /usr/pgsql-9.2/lib/postgis-2.1.so /usr/pgsql-9.2/lib/postgis-2.0.so

sudo ln -s /usr/pgsql-9.2/lib/rtpostgis-2.1.so /usr/pgsql-9.2/lib/rtpostgis-2.0.so

Una vez hecho esto entre a las diferentes bases de datos que tenían instalado  la extensión postgis y ejecuté el siguiente comando con el usuario administrador:

ALTER EXTENSION postgis UPDATE TO "2.1.0";

Y al parecer el problema se resolvió.

Si tengo algún problema posterior se los haré saber.

Saludos.