遅延ロード用に設定されたオブジェクトにプロパティをロードする必要があります。NhibernateUtil.Initialize() を使用してアクセスまたはロードしようとすると、同じエラーが発生します。
"Initializing[ProjectName.Logic.Entities.AddressList#9] - プロキシを初期化できませんでした - セッションがありません。"
「using」句でセッションを開くために必要なメソッドを呼び出すことで、セッションが存在することを確認できます。(「true」のパラメーターを使用してリポジトリ オブジェクトをインスタンス化すると、必要に応じてセッション ファクトリも作成され、セッションが開かれるように、セッションの作成を埋めました。「using」句でトリガーされるブレークポイントで検証されます。)
foreach (MemberViewModel MVM in _filteredMemberViewModels)
{
foreach (Detail Mailings in MVM.Member.Mailings)
{
//used for lazy loading
using (var repo = new AddressListRepository(true))
{
NHibernateUtil.Initialize(Mailings.AddressList);
}
}
}
詳細マッピング:
public class DetailMap : ClassMap<Detail>
{
public DetailMap()
{
Table("AddressDetailsCCN");
// Unique Identifier
Id(x => x.Id, "Id")
.GeneratedBy.Identity();
// MANY TO ONE relationship (the list has many details)
References<AddressList>(x => x.AddressList, "ListId")
.LazyLoad()
.Not.Nullable()
.Cascade.None();
// MANY TO ONE relationship (Members have details)
References<Member>(x => x.Member, "MemberId")
.Not.LazyLoad()
.Not.Nullable();
// First line of Address
Map(x => x.Address, "Address")
.Nullable();
// Second line of Address
Map(x => x.Address2, "Address2")
.Nullable();
// City
Map(x => x.City, "City")
.Nullable();
// State
Map(x => x.State, "State")
.Nullable();
// Zip
Map(x => x.Zip, "Zip")
.Nullable();
// Finalized date
Map(x => x.FinalizedDate, "FinalizedDate")
.CustomType(typeof(DateTime))
.Nullable();
// Date the list is created by
Map(x => x.CreatedDate, "CreatedDate")
.CustomType(typeof(DateTime))
.Not.Nullable();
}
}