2009-05-25 8 views
23

Akıcı bir şekilde nhibernate ile eşlenen bir sınıfım var, ancak sınıflandırma özelliklerinden birinin eşleme tarafından yok sayılmasını istiyorum.Fluent NHibernate'e bir sınıf özelliğini eşlememesine nasıl söylenir

sınıf ve haritalama ile

bu hatayı alıyorum aşağıda:

Aşağıdaki türler yakınlık gibi kullanılamaz: iMasterengine.Data.Model.Calendar: yöntem get_HasEvents sanal olmalıdır

//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? 
    } 
} 

cevap

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

Bu satır nereye yerleştirilmelidir? CalendarMap yapıcısına gideceğini düşündüm, ancak orada bir harita örneği göremiyorum. – ddc0660

+0

Yapılandırmayı oluşturduğunuzda eklenmesi gerekir. Bu bağlantıya bakın [http://wiki.fluentnhibernate.org/Auto_mapping#Ignoring_properties](http://wiki.fluentnhibernate.org/Auto_mapping#Ignoring_properties) – Rajeesh

+17

IgnoreProperty() yalnızca eşlemelerinizi * belirtiyorsanız (yani classmap kullanarak) o zaman bu uygun değildir. Poster bir sınıf haritası içeriyordu ve otomatik haritalama hakkında bir şey söylemedi, dolayısıyla bunun ne ile alakalı olduğunu göremiyorum. – UpTheCreek

26

sadece sınıfta HasEventssanal yapabilirsiniz:

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

Haritalara hiçbir şey eklemeniz gerekmez.

Otomatik Eşleme özelliğini kullanıyorsanız, bir özellik oluşturmaya akıcı olduğunu söylemelisiniz;

+0

Ben bu linq – tykovec

+1

ile işe yaramaz düşünüyorum Benim için NHibernat.e eski bir sürümünde Linq geçiyor – alphadogg

İlgili konular