1

私はclass MoneyCompositeUserType : ICompositeUserType

マッピングで次のように使用します。

public InvoiceMap()
{
    Table("Invoices");
    Id(x => x.Id);
    Map(x => x.Customer);
    Map(x => x.Number);
    Map(x => x.TotalValue)
        .CustomType(typeof(MoneyCompositeUserType))
        .Columns.Clear()
        .Columns.Add("TotalValue_Amount", "TotalValue_Currency");
}

そして、ここにクラスがあります:

public class Invoice
{
    public virtual int Id { get; set; }

    public virtual int Number { get; set; }
    public virtual string Customer { get; set; }
    public virtual Money TotalValue { get; set; }
}

値が遅延ロードされると思ったのですが、それがvirtual正しいのですか?ただし、NullSafeGetアイテムが読み込まれると、複合ユーザー タイプのメソッドが呼び出されます。これが私の失敗したテストです:

using (var session = NHibernateHelper.OpenSession())
{
    var fromDb = session.Get<Invoice>(invoice.Id);
    Assert.IsFalse(NHibernate.NHibernateUtil.IsPropertyInitialized(fromDb, "TotalValue"));
}

そのプロパティが遅延ロードされていないのはなぜですか?

4

1 に答える 1