2009-05-25 7 views
23

私は流暢なnhibernateでマッピングされたクラスを持っていますが、クラスプロパティの1つがマッピングによって無視されるようにします。 I以下のクラスとマッピングにFluent NHibernateにクラスプロパティをマップしないように指示する方法

はこのエラーを取得:

次のタイプがプロキシとして使用することはできません。 iMasterengine.Data.Model.Calendar:メソッドget_HasEventsは、仮想

//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? 
    } 
} 
する必要があります

答えて

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

この行はどこに配置する必要がありますか?私はそれがCalendarMapコンストラクタに入ると考えましたが、そこで使用できるマップインスタンスは表示されません。 – ddc0660

+0

設定を作成する場所に追加する必要があります。このリンクを参照してください。[http://wiki.fluentnhibernate.org/Auto_mapping#Ignoring_properties](http://wiki.fluentnhibernate.org/Auto_mapping#Ignoring_properties) – Rajeesh

+17

IgnoreProperty()は、自分でマッピングを指定している場合にのみ、* automapping * (つまり、クラスマップを使用して)これは関係ありません。ポスターにはクラスマップが含まれており、オートキャッピングについては何も言及していないため、これに関連性はありません。 – UpTheCreek

26

あなただけのクラスでHasEvents仮想を行うことができます

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

マッピングに何も追加する必要はありません。

自動マッピングを使用している場合は、私があなたがいるとは思わないが、あなたは流暢にプロパティを導入する必要があります。

+0

これはlinqで動作しないと思います – tykovec

+1

NHibernatの古いバージョンでLinqを使っている私にとってはうまくいきません。 – alphadogg

関連する問題