References
のいずれかのプロパティにPropertyRef
を使用しています。 LazyLoad()
では、SalesPersonプロパティに「ヒット」することはありませんが、Selectを実行してUser
エンティティを読み込みます。Fluent-Nhibernateの参照とPropertyRef遅延ロードでの選択
注文マッピング
Id(x => x.Id).GeneratedBy.Native();
References(x => x.SalesPerson)
.LazyLoad()
.PropertyRef(x => x.Username)
.Column("rsm");
Map(x => x.Title);
注文クラス
public class Order : BaseEntity
{
...
public virtual User SalesPerson { get; set; }
public virtual string Title { get; set; }
...
}
ユーザーマッピング
Id(x => x.Id).GeneratedBy.Native();
Map(x => x.Username).Column("login");
ユーザークラス
public class User : BaseEntity
{
public virtual string Username { get; set; }
...
}
生成された注文のマッピング
<many-to-one class="Project.User" lazy="proxy" name="SalesPerson" property-ref="Username">
<column name="rsm" />
</many-to-one>
実行されるコード
var order = session.Get<Order>(1);
Console.WriteLine(order.Title);
は、私はUserエンティティをロードするための選択を防ぐために、とにかくありエンティティUser
を使用していませんか?
実際のIDを使用するようにスキーマを変更しようとしていると思うが、このすべてのことは面倒なことではなく、悪い習慣である。リンクありがとう。 – mxmissile