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!