のIDのみを取得します:私は私はこのマッピング持っている私のManyToOneオブジェクト
Session.Get<Foo>(1).Bar.Id
を行うことができます知っている
SELECT bar_id FROM foo f WHERE f.id = 1
:
[Class(Table = "foo", Name = "Foo")]
public class Foo
{
[Id(0, TypeType = typeof(long), Name = "Id", Column = "id")]
[Generator(1, Class = "native")]
public virtual long Id { get; set; }
[ManyToOne(Class = "Bar", Column = "bar_id", NotNull = true)]
public virtual Bar Bar { get; set; }
}
[Class(Table = "bar", Name = "Bar")]
public class Bar
{
[Id(0, TypeType = typeof(long), Name = "Id", Column = "id")]
[Generator(1, Class = "native")]
public virtual long Id { get; set; }
[Bag(0, Inverse = true, Table = "foo", Cascade = "save-update")]
[Key(1, Column = "bar_id", ForeignKey = "fk_foo_bar_id")]
[OneToMany(2, Class = "Foo")]
public virtual IList<Foo> Foos { get; set; }
}
と私はSQLクエリをやりたいがしかし、それはBar
オブジェクトをロードし、それが非常にHEAVYオブジェクトの場合、私の単純なクエリは、foo
テーブルが非常に遅いです。私はどうすればいいのですか?私はそれを違ったかどう
[Property(Column = "bar_id", NotNull = true)]
public virtual long BarId { get; set; }
のようにプロパティを追加することを考えました。しかし、それは間違っているかどうかはわからない、または。
はい私は遅延ロードについて知っていますが、私は2番目のBarオブジェクトでそれを変更することはできません。実際に私はちょうど私のNHibernateが私の最初のオブジェクトFooの内部にある何かのために、オブジェクトバーをロードするように強制しない... –
それは怠惰な読み込みではない、それは怠惰なプロパティです...あなたはかさばるフィールドがある場合(マッピングではない)、あなたは怠け者としてマークすることができます。それについてのayendeの記事をチェックしてください。 – Illuminati
申し訳ありませんが、私はこの記事について知っていました。私はコード内で他の場所を使用しています。私の問題は、他のコードを破る可能性があるため、属性を変更してLazyとしてプロパティを変更できないことです。 –