2009-05-25 11 views
23

Tengo una clase asignada en nhibernate con fluidez, pero quiero que una de las propiedades de clase sea ignorada por la asignación.Cómo decirle a Fluiber NHibernate que no debe asignar una propiedad de clase

con la clase y el mapeo por debajo consigo este error:

Los siguientes tipos no pueden utilizarse como proxies: iMasterengine.Data.Model.Calendar: get_HasEvents método debe ser virtual

//my class 
public class Calendar : IEntity { 
    public virtual int Id { get; private set; } 
    public virtual string Name { get; set; } 
    public virtual string SiteId { get; set; } 
    public virtual IList<CalendarEvent> Events { get; set; } 
    //ignore this property 
    public bool HasEvents { get { return Events.Count > 0; } } 
} 

//my mapping 
public class CalendarMap : ClassMap<Calendar> { 
    public CalendarMap() { 
     Id(x => x.Id); 
     Map(x => x.Name); 
     Map(x => x.SiteId); 
     HasMany(x => x.Events).Inverse(); 
     //what do I put here to tell nhibernate 
     //to ignore my HasEvents property? 
    } 
} 

Respuesta

13
map.IgnoreProperty(p => p.What); 
+10

¿Dónde debe colocarse esa línea? Pensé que entraría en el constructor CalendarMap, pero no veo una instancia de mapa disponible allí. – ddc0660

+0

Se debe agregar al crear la configuración. Ver este enlace [http://wiki.fluentnhibernate.org/Auto_mapping#Ignoring_properties](http://wiki.fluentnhibernate.org/Auto_mapping#Ignoring_properties) – Rajeesh

+17

IgnoreProperty() es solo para * automapping * si estás especificando tus mapeos tú mismo (es decir, utilizando classmap), entonces esto no es relevante. El póster ha incluido un mapa de clase, y no ha dicho nada sobre la automatización, por lo que no veo qué relevancia tiene esto. – UpTheCreek

26

Usted puede simplemente hacer HasEvents virtual en la clase:

public virtual bool HasEvents { get { return Events.Count > 0; } } 

No es necesario agregar nada a las asignaciones.

Solo necesita decir con fluidez para ingober una propiedad si está utilizando Auto Mapping, que no creo que sea.

+0

Creo que esto no funciona con linq – tykovec

+1

No funciona para mí pasar por Linq en una versión anterior de NHibernat.e – alphadogg

Cuestiones relacionadas