2009-03-11 11 views
34

Soy un novato en NHibernate y trato de utilizar Fluent para el mapeo. El nombre de la clase de mi entidad es diferente del nombre de la tabla de la base de datos a la que tiene que asignarse. Estoy usando una clase de mapeo derivada de ClassMap<>, pero no puedo especificar el nombre de la tabla: la propiedad TableName de ClassMap es de solo lectura.¿Cómo se especifica el nombre de la tabla en la clase Fluither NHibernate ClassMap?

Gracias por su ayuda.

Respuesta

43

Use en su lugar.

+9

Esto es ahora. A partir de septiembre de 2009 Tabla ("table_name"); – Chin

6

¿Funciona así?

public class UserAccountMap : ClassMap<UserAccount> { 
    public UserAccountMap() { 
     Table("User"); 
     Id(x => x.UserID, "UserID").GeneratedBy.Identity(); 
     Map(x => x.FirstName, "FirstName").Length(50) 
      .Not.Nullable(); 
     Map(x => x.LastName, "LastName").Length(50) 
      .Not.Nullable(); 
    } 
} 
+1

El usuario es una palabra clave reservada. adjuntar con '. Consulte http://stackoverflow.com/a/2879630/475882 – jaxxbo

6

El ejemplo anterior me guía en la dirección correcta. Esto funcionó para mí. Mi nombre de clase es "Parte" y el nombre de mi tabla es "prty.Party".

public class PartyMap : ClassMap<Party> 
{ 
    public PartyMap() 
    { 
    Table("prty.Party"); 
    Id(x => x.PartyID); 
    Map(x => x.PartyTypeLID); 
    Map(x => x.OrganizationTypeLID); 
    Map(x => x.PreferredContactMethodLID); 
    Map(x => x.PrimaryLanguageLID); 
    Map(x => x.PartyVID); 
    Map(x => x.BeginDate); 
    Map(x => x.EndDate); 
    Map(x => x.RowDescriptor); 
    Map(x => x.RowModifiedDate); 
    Map(x => x.RowModifiedBy); 
    Map(x => x.RowCreatedDate); 
    Map(x => x.RowCreatedBy); 
    }   
} 
+0

. ¿Existe alguna forma de omitir todas estas llamadas de mapa? –

Cuestiones relacionadas